我使用GHCi(版本6.12.3)與Haskell玩了一下。我最近閱讀了有關函數和應用函數的想法,認爲如果你不能使用函子的基元來實現應用函子的類似<*>
。經過一番思考,我想出了fmap fmap
這將有Haskell - fmap fmap不起作用
Functor f => f (a -> b) -> f (f a -> f b)
一個(幾乎)理想型或更一般
(Functor f1, Functor f2) => f1 (a -> b) -> f1 (f2 a -> f2 b)
我試圖
let q = fmap fmap
我有以下錯誤
<interactive>:1:8:
Ambiguous type variable `f1' in the constraint:
`Functor f1' arising from a use of `fmap' at <interactive>:1:8-16
Probable fix: add a type signature that fixes these type variable(s)
<interactive>:1:13:
Ambiguous type variable `f' in the constraint:
`Functor f' arising from a use of `fmap' at <interactive>:1:13-16
Probable fix: add a type signature that fixes these type variable(s)
按照建議書寫上述類型簽名並沒有幫助。 最瘋狂的事情是,當我輸入:t fmap fmap
我得到了與上述類似的類型。
我在做什麼錯?儘管GHCi找到類型,爲什麼fmap fmap
會出現類型錯誤?
它似乎是monomophism限制,因爲你的靈魂工程。謝謝。但是爲什麼當我指定類型時它不工作? – Mafi 2011-04-30 09:50:54