我想知道为什么在Haskell中某些函数名称没有对称性:
例如:
head
:获取第一个元素
last
:获取最后一个元素
是否有充分的理由说明为什么head
函数未命名为first
,或者相反,last
函数可以命名为end
或类似名称。 / p>
答案 0 :(得分:9)
Haskell函数具有两对列表函数:
head :: [a] -> a
和tail :: [a] -> [a]
;和init :: [a] -> [a]
和last :: [a] -> a
。Learn You a Haskell for the Greater Good对此做了很好的说明:
head
因此是列表的第一个元素,而tail
是包含其余元素的列表。
init
接受除最后一个元素以外的所有元素,而last
接受最后一个元素。
Haskell中的列表从概念上讲是链接列表。通常,随机访问在列表处理中不是很常见。通常,大多数列表处理功能都会获取列表并像处理项目流一样处理列表。
通常nomenclature of linked lists [wiki]指定:
列表的
head
是它的第一个节点。列表的tail
可以引用列表的头之后的其余部分,也可以引用列表中的最后一个节点。在Lisp和某些派生语言中,下一个节点可以称为列表的cdr
(发音为caner),而头节点的有效负载可以称为car
。