haskell - 什么是(_ :xs) notation in haskell?

标签 haskell

我看到了这个函数

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/

相关文章:

haskell - 使用 Control.Concurrent.MonadIO 进行管道和 fork

haskell - IntelliJ Haskell 插件 : ghc-modi failed with error

haskell - 编写并行 `` zip `` using ` `Control.Parallel.Strategies``

haskell - 如何在偶数索引和奇数索引中选择元素?

haskell - 解释新的 foldr 在 Haskell 中是如何工作的

MAC LION 上的 Haskell

haskell - 如何将给定的变量列表与无限列表进行比较以找到 Haskell 中的第一个未出现的变量?

haskell - 为什么快速检查通过这两个不同的功能 Haskell?

haskell - 如何为自定义新类型派生 PersistField?

string - 字符串函数中的 Haskell 字符