Answers:
对于容易支持currying和部分应用程序的语言,有一系列引人注目的论点,它们最初来自Chris Okasaki:
为什么?然后,您可以很好地对数据进行操作。例如insert 1 $ insert 2 $ insert 3 $ s
。这也有助于实现状态功能。
诸如“容器”之类的标准库遵循此约定。
有时会给出替代参数以将数据结构放在首位,因此可以将其关闭,从而在静态结构(例如查找)上产生更为简洁的函数。但是,广泛的共识似乎是这不是一个胜利,尤其是因为它会促使您使用带有大量括号的代码。
对于递归函数,通常将变化最大的参数(例如累加器)作为最后一个参数,而变化最小的参数(例如函数参数)放在开头。这与数据结构的最后样式很好地结合在一起。
Okasaki视图的摘要在他的Edison库(同样是另一个数据结构库)中给出: