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

mb1*_*b14 5 haskell

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

lef*_*out 10

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

if null list then
  ...
 else
  let foo = head list in ...
Run Code Online (Sandbox Code Playgroud)

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

case list of
  [] -> ...
  (foo:_) ->
Run Code Online (Sandbox Code Playgroud)

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