argius note

プログラミング関連

リストプロセッサ

今日はリストです。Haskellのリストは単方向リンクリスト(の一種?)なので、Lispのリストみたいに使えば良さそう。というわけで、Lispもどきをしゃべらせます。

car (x:xs) = x
cdr (x:xs) = xs

main = do print $ car "abcde"
          print $ cdr "abcde"
          print $ car [1, 2, 3, 4, 5]
          print $ cdr [1, 2, 3, 4, 5]
$ runghc list.hs
'a'
"bcde"
1
[2,3,4,5]
$

できました。が、わざわざ定義してあげる必要はなく、headとtailを使えば良いのです。

main = do print $ head "abcde"
          print $ tail "abcde"
          print $ head [1, 2, 3, 4, 5]
          print $ tail [1, 2, 3, 4, 5]