haskell中的(_:xs)表示法是什么?

时间:2016-03-29 17:47:22

标签: haskell

我看到了这个功能

last_element :: [a] -> a
last_element (_:xs)= last_element xs

我不理解“(_:xs)”中的下划线冒号。我读到它从输入的列表中分离出头部。下划线冒号是以原始递归方式删除列表的第一个数字或“头部”吗?

编辑,根据我的理解,这个功能缺少基本情况。这是对的吗?

1 个答案:

答案 0 :(得分:1)

下划线允许您进行模式匹配,但暗示您实际上不会使用该值。您的模式匹配并非详尽无遗,因此无法实际工作。您需要定义缺失的模式来修复它:

last_element :: [a] -> a
last_element [] = error "Empty List"
last_element [x] = x
last_element (_:xs)= last_element xs