読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

リストがソート済みかどうか

haskell
isSorted :: (Ord a) => [a] -> Bool
isSorted [] = True
isSorted [_] = True
isSorted l = and $ zipWith (<) l (tail l)

こんな感じに書ける。最近、zipやzipWith、mapといった基本的な高階関数が最初から(もしくは、builtinのモジュールとして)存在しているかどうかによって、その言語でどういう風に考えるか決まってくるように感じる。

[1,2,3,4]を例に取ると、zipWithを使って[1 < 2, 2 < 3, 3 < 4]を作り、andで全てTrueかどうか調べている。