我有以下類型newtype Arr2 e1 e2 a = Arr2 { getArr2 :: e1 -> e2 -> a }
。 而且我得到了寫函子實例吧,但我真的不明白,我怎麼 試圖Functor的實例
instance Functor (Arr2 e1 e2) where
fmap g (Arr2 a) = Arr2 (g a)
和
instance Functor (Arr2 e1 e2) where
fmap g = g . getArr2
這實際上導致類型
(a -> b) -> Arr2 e1 e2 a -> b
代替所需的
(a -> b) -> Arr2 e1 e2 a -> Arr2 e1 e2 b
所以,請幫我
如果你想得到更多的
不可讀優雅,你可以做'fmap g(Arr2 a)= Arr2((g。))。一)'。 – Alec@Alec:是的。謝謝你的建議。更新。 –
當pointfree超出一個參數時,我喜歡使用[SECs](http://conal.net/blog/posts/semantic-editor-combinators)。這個'(。)'部分的廢話從來沒有吸引過我 – luqui