GHCは意外と親切だった

8 Jan

この間から急に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を使うと、色がついたり(たまに)ツールチップで型が表示されたりして便利ですよ。

Leave a Reply

Your email address will not be published.