我正在制作我自己的小函数库,我试图遵循Phobos的命名约定,但我真的很困惑。我怎么知道东西放哪?
例子:
如果Phobos中有一个像foldRight
这样的函数(基本上是相反方向的reduce
),我会在哪个模块中找到它?
我能想到几个:
-
std.algorithm
:因为它表达了一个算法 -
std.array
:因为我可能会在数组 上使用它 -
std.container
:因为它用于容器,而不是单个对象 -
std.functional
:因为它主要用于函数式编程 -
std.range
:因为它也在range上运行
但是我不知道哪一个是好的选择——我可以给出至少3个令人信服的理由。
约定是什么?
-
std.algorithm
:是的,你可以实现像reduce!fun(retro(r))此模块指定在序列
上运行的算法 std.array
:不,因为它也可以运行在其他范围这些是只在内置数组上运行的辅助函数
std.container
:不,因为它没有定义数据结构(如树集)这定义了语言中没有内置的数据结构(现在是链表,二叉树和内存管理方面的确定性数组)
std.functional
: no,因为它不是在一个函数上操作,而是在一个范围上操作这个接受一个函数并返回一个不同的函数
std.range
:不,因为它没有定义一个范围或提供一种不同的方式来迭代一个
缺乏清晰的结构是我对phobos库TBH的不满之一,但真正阅读文档的第一段应该会告诉你在哪里放置函数