GHCは意外と親切だった

この間から急にHaskellに興味を持って、いろいろやってみているわけだが、そのコンパイラGHCに関しての話。

quicksort :: [a] -> [a]
quicksort [] = []
quicksort (x:xs) = quicksort [n|n<-xs,n<=x] ++ [x] ++ quicksort [n|n<-xs,n>x]

というQuickSortのコードがエラーに。コンパイラ(GHC)曰く、

Could not deduce (Ord a) from the context () arising from use of `>’ at hoge.hs:34 Probable fix: Add (Ord a) to the type signature(s) for `quicksort’ つまり、任意の型では>演算子は使えませんよ。と。 でもって、(Ord a)をquicksortの定義部分に付け加えるとよいですよ。と。 おぉぉ。なんと親切な。こんなに親切なコンパイラは見たことないかも。

関係ないけど、VisualHaskellStudio.netを使うと、色がついたり(たまに)ツールチップで型が表示されたりして便利ですよ。