Haskellの標準関数tailは、リストの先頭以外の要素をリスト生成し、返すという
機能を持ちますが、空リストを引き渡した場合、例外を発生させます。
ここでは、空リストを与えられても、例外を返さず、空リストを返すような自前の
tailを作成します。
ガード付条件式、条件式、パターンマッチの3パターンでこの関数を定義します。
guard_tail.hs(ガード付条件式)
guard_tail :: [a] -> [a]
guard_tail (xs)
| null xs = []
| otherwise = drop 1 xs
cond_tail.hs(条件式)
cond_tail :: [a] -> [a]
cond_tail xs =
if null xs == True then []
else drop 1 xs
ptn_tail.hs(パターンマッチ)
ptn_tail :: [a] -> [a]
ptn_tail [] = []
ptn_tail (x:xs) = xs
正直、パターンマッチによる実装が一番、しっくりきて、楽チンですね。