为什么Haskell中没有Seq的头函数

时间:2014-11-29 12:42:22

标签: haskell

我刚发现Data.Sequence,似乎没有headlast功能。 我知道你可以在viewL上进行模式匹配,或者使用index 0等...但是有这样的原因 基本功能没有实现(或者我没有实现)?

1 个答案:

答案 0 :(得分:10)

使用Prelude.head通常被认为是不好的做法:部分功能总是有危险的;像

这样的代码
if null list then
  ...
 else
  let foo = head list in ...

通常由初学者编写,但当然最好表达

case list of
  [] -> ...
  (foo:_) ->

因此,在许多非基本模块中,部分函数都被忽略了,就像在这种情况下一样。首选方式是模式匹配 - 正如您所说的viewL