現在、Haskellを少しでも勉強しようと思い、『関数型プログラミングの楽しみ』という本を写経しています。その中のコードの中に、下記のようなコードが含まれています(全体のコードはこのようになっています)。

この中に、

data Ord a => Tree a = Null | Fork a (Tree a) (Tree a)

というコードが出てきます。

おそらくこれは、ドキュメントに書かれてある Data type contexts であると推測しています。実際にrunhaskellv 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にも似たような問題として質問に取り上げられてありましたが、若干問題が違うようにも感じられました。今回の場合、どのように修正するのが適切でしょうか。