由于Ocaml不接受函数重载,因此有时我必须为不同类型定义一些相似的函数。例如,
let reduce_a (a: A): A = ...
let reduce_b (b: B): B = ...
let a_compare (a0: A) (a1: A): bool = ...
let b_compare (b0: B) (b1: B): bool = ...
我知道最好的方法是拥有两个模块
A
和B
,并制作2个函数A.reduce
和B.reduce
。但是在创建模块之前,我只想知道命名函数的最佳约定。人们通常喜欢命名
reduce_a
(类型之前的动词)还是a_reduce
(类型之前的动词)吗?我们可以在标准库中找到一些示例吗? 最佳答案
我发现a_compare
格式比compare_a
更加有用,包括OCaml编译器本身,因此您最好使用该约定。除了外观上的对齐以及它像命名空间一样“感觉”之外,没有任何实际的好处。
请注意,与函数相比,这在记录类型的标签和变体类型的构造函数中使用更为广泛。
关于naming-conventions - Ocaml中的功能命名约定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8286735/