2016-11-12 4 views
1

プログラム例はLearn You a Haskellであり:部分的に適用された関数型をファンクタにするにはどうすればよいですか?

instance Functor ((->) a) where 
    fmap = (.) 

私は悩みにそれをコンパイルする必要がありますが:

重複インスタンス宣言:

インスタンスのFunctor(( - >)A) - 定義を(GHC.Base)で定義されている

How do you override Haskell type class instances provided by package code?に言及すると、Functorの宣言に新しいタイプを定義する必要があります。 ' - (>)' は種類「* - > -

newtype Ntype a = N ((->) a) 

instance Functor ((->) a) where 
    fmap = (.) 

1つの以上の引数を期待します '(>)A'

種類を期待しますが、私はそうしようとしたが失敗しますニュータイプ ' 'のためのnewtype宣言において

' 'データコンストラクタの定義において

' - (>)A N *」型で

•'

どうすればいいですか?

+3

'newtype Ntype a b = N(a - > b)'インスタンスのFunctor(Ntype a)where ... ' – Alec

答えて

0

Alexによって推奨:

newtype Ntype a b = N (a -> b) 

instance Functor (Ntype a) where 
    fmap f (N g) = N (f . g) 

おかげAlexを!

関連する問題