だから私はHaskellが好きですが、Numクラスには不満があります。だから私は代数的型のために私自身の型クラス階層を作りたいです。
問題は、プレリュードを非表示にするNumとそれに関連するすべてのものをインポートしたとしても、リテラル1をタイプtにする唯一の方法は、tインスタンスをNumにすることです。
自分でfromIntegerクラスを作成し、このようにNumを画像から完全に除外したいと思います。
import Prelude hiding (everything having to do with Num)
import qualified Prelude (everything having to do with Num)
class (Eq fi) => FromInteger fi where
fromInteger :: Integral -> fi
foo :: (FromInteger fi) => fi -> String
foo 1 = "that was a one"
foo 0 = "that was a zero"
foo n = "that was neither zero nor one"
次に、fromIntegerを新しいタイプに適切に実装し、Numについて何も言う必要はありません。
別のfromIntegerメソッドを使用するようにパーサーに指示する方法はありますか?
ありがとう!