我看到了这个函数
last_element :: [a] -> a
last_element (_:xs)= last_element xs
我不明白“(_:xs)”中的下划线冒号。我读到它将头部与输入的列表分开。下划线冒号只是以原始递归方式删除列表的第一个数字或“头”吗?
编辑,根据我的理解,这个函数将缺乏基本情况。这是正确的吗?
最佳答案
下划线允许您进行模式匹配,但意味着您实际上不会使用该值。您的模式匹配并不详尽,因此它实际上不起作用。您需要定义缺失的模式来修复它:
last_element :: [a] -> a
last_element [] = error "Empty List"
last_element [x] = x
last_element (_:xs)= last_element xs
关于haskell - 什么是(_ :xs) notation in haskell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291482/