D命名惯例:Phobos是如何组织的?

时间:2011-08-07 20:43:49

标签: d phobos

我正在创建自己的小函数库,我正在尝试遵循Phobos的命名惯例,但我真的很困惑。我怎么知道哪些东西适合?

实施例

如果在Phobos中有一个类似foldRight的函数(反方向基本上是reduce),我会在哪个模块中找到它?

我能想到几个:

  • std.algorithm:因为它正在表达算法
  • std.array:因为我可能会在数组上使用它
  • std.container:因为它用于容器而不是单个对象
  • std.functional:因为它主要用于函数式编程
  • std.range:因为它也适用于范围

但我不知道哪一个会是一个不错的选择 - 我可以为至少其中三个提供令人信服的论据。

惯例是什么?

1 个答案:

答案 0 :(得分:17)

  • std.algorithm:是的,你可以实现它像reduce!fun(retro(r))

    此模块指定在序列上运行的算法

  • std.array:不,因为它也可以在其他范围内运行

    这些是仅在内置数组中运行的辅助函数

  • std.container:不,因为它没有定义数据结构(如树集)

    这定义了未构建到语言中的数据结构(现在是链接列表,二进制树和内存管理方面的确定性数组)

  • std.functional:不,因为它不在函数上运行,而是在范围

    上运行

    这个需要一个函数并返回一个不同的

  • std.range:不,因为它没有定义范围或提供不同的方式来迭代一个

缺乏清晰的结构是我对phobos库TBH的抱怨之一,但真正阅读文档的第一段应该告诉你相当多的地方放置功能