IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

安全な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 >