Соглашения об именах D: как организован Фобос?

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

Пример:

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

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

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

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

Какая конвенция?


person user541686    schedule 07.08.2011    source источник


Ответы (1)


  • std.algorithm: да, и вы можете реализовать это как, например, reduce!fun(retro(r))

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

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

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

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

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

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

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

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

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

person ratchet freak    schedule 07.08.2011
comment
+1 Я действительно не ожидал получить разумные объяснения, но они, кажется, имеют смысл (во всяком случае, по большей части). Спасибо! - person user541686; 08.08.2011