NonEmpty
code:hs
code:hs
safeHead :: NonEmpty a -> a
safeHead (x :| xs) = x
こうやって見ると意味がわかる
先頭要素 :| 普通のリストなので、
先頭要素 :| []か先頭要素 :| [1,2,3,..]のいずれかにしかならない
だからこれで、「絶対に1要素以上はあるリスト」を表現できる
Purs
テストを見れば雰囲気がわかる
ts
code:ts
type NonEmptyList<T> = [T, ...T[]];
code:ts
type NonEmptyArray<T> = [T, ...T[]] | [...T[], T]