現在、Haskellを少しでも勉強しようと思い、『関数型プログラミングの楽しみ』という本を写経しています。その中のコードの中に、下記のようなコードが含まれています(全体のコードはこのようになっています)。
この中に、
data Ord a => Tree a = Null | Fork a (Tree a) (Tree a)
というコードが出てきます。
おそらくこれは、ドキュメントに書かれてある Data type contexts であると推測しています。実際にrunhaskell
のv 7.6.3
では-XDatatypeContexts
オブションを使うことで動かせることがメッセージで示唆されます。
ですが、このオブションを実際に指定すると:
on the commandline: Warning:
-XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
という、「非推奨であるという警告」が出てきてしまいます。
おそらく、なんらかの形で、このdata
を理想的なかたちで修正する方法があり、そのようにする必要があると思われるのですが、理解不足のため、どのように修正すればいいのかがよくわかりません。
本家Stackoverflowにも似たような問題として質問に取り上げられてありましたが、若干問題が違うようにも感じられました。今回の場合、どのように修正するのが適切でしょうか。