私はHaskellの初心者です。今、私は次のようにデータを定義しようとしました:haskellの自己定義データのFunctorのインスタンスを実装する方法
data Unsure a = Sure a |Error [Char]
deriving (Show)
このようファンクタを実装しようとした:私の意見では
instance Functor Unsure where
fmap f (Sure x) = Sure (f x)
fmap f (Error e) = Error e
私はわからないためのFunctorを実装したら、FMAPは動作するはずです。だから私のような何かをするFMAPを使用することができます。
fmap (+3) (+100) Sure 1
結果は私が制約で非型の変数引数•エラー
を持って実際には、確かに104になるはずでした。 Num(Unsure a) (これを可能にするためにFlexibleContextsを使用) •推測されたタイプ をチェックするとき、それは:: forallです。 (Num(Unsure a)、Num a)=>わからないa
何か提案がありますか?
は、あなたはそれが動作するはずだと思うのはなぜ? –
私はfmap(+3)と入力したときに間違いました。 – dannybaobei
実際にunboxにする一般的な方法を望むなら、fmap(==)100(確かに100)のようなことをすることができます。 – dannybaobei