Соглашения об именах: Как организован Фобос? - PullRequest
15 голосов
/ 08 августа 2011

Я делаю свою собственную маленькую библиотеку удобных функций и пытаюсь следовать соглашению об именах Фобоса, но я действительно запутался.Как мне узнать, где все будет в порядке?

Пример:

Если бы в Фобосе была функция типа foldRight (в основном reduce в обратном направлении), какой модуль я бы нашелэто в?

Я могу думать о нескольких:

  • std.algorithm: потому что это выражает алгоритм
  • std.array: потому что я, вероятно, собираюсьиспользовать его в массивах
  • std.container: поскольку он используется в контейнерах, а не в отдельных объектах
  • std.functional: поскольку он используется главным образом в функциональном программировании
  • std.range: Потому что он работает и на диапазонах

, но я не знаю, какой из них будет хорошим выбором - я мог бы привести убедительные аргументы как минимум для 3 из них.

Что такое конвенция?

1 Ответ

17 голосов
/ 08 августа 2011
  • std.algorithm: да, и вы можете реализовать это, как уменьшить! Fun (retro (r))

    этот модуль определяет алгоритмы, которые работают на последовательностях

  • std.array: нет, поскольку он также может работать в других диапазонах

    это вспомогательные функции, которые запускаются только для встроенных массивов

  • std.container: нет, потому что он не определяет структуру данных (например, древовидную структуру)

    это определяет структуры данных, которые не встроены в язык (на данный момент связанный список, двоичное дерево и детерминированный массив с точки зрения управления памятью)

  • std.functional: нет, потому что он работает не с функцией, а с диапазоном

    этот принимает функцию и возвращает другой

  • std.range: нет, поскольку он не определяет диапазон или не предоставляет другой способ итерации по одному

отсутствие четкой структуры - одна из моих проблем с библиотекой Фобоса TBH, но действительно чтение первого абзаца документов должно рассказать вам немного о том, где поставить функцию

...