Haskellで代数的実数の型を実装してみたが、 これをRealクラスのインスタンスにするか悩んでいる。 というのは、Realクラスは toRational :: Real a => a -> Rational を要求するため。 

選択肢:
1) Realクラスのインスタンスは実装しない。ただ、Realクラスを実装しないとそのサブクラスのRealFracも実装できず、floorとかroundとかが標準的インターフェースで使えないのがちょっと痛い。
2) Realクラスのインスタンスを実装し、toRationalは適当な近似値を返す。 でも、toRationalは正確な値を返されると仮定していることが多い気がして、無言で誤差を混入するのは気持ち悪い。
3) Realクラスのインスタンスを実装し、toRationalはエラーにする。本来定義されていてしかるべき演算をそういう都合でエラーにするのはなぁ・・・