安全なhead
Prelude
にあるhead
は安全ではない
lambda > import Control.Lens.Cons lambda > head [1,2,3] 1 lambda > head [] *** Exception: Prelude.head: empty list
Safe
パッケージがある。
lambda > import Safe lambda > headMay [1,2,3] Just 1 lambda > headMay [] Nothing
Lens
でもおなじ機能がある。
lambda > import Control.Lens.Cons lambda > [1,2,3] ^? _head Just 1 lambda > [] ^? _head Nothing lambda >