当一个函数出现在monad中时,它会发生一些变化.
在GHCI中:
> :t map
map :: (a -> b) -> [a] -> [b]
> a <- return map
> :t a
a :: (GHC.Prim.Any -> GHC.Prim.Any)
-> [GHC.Prim.Any] -> [GHC.Prim.Any]
Run Code Online (Sandbox Code Playgroud)
此更改使得难以将函数存储在更高级别的类型中.
这里发生了什么,我可以让它不会发生吗?
(这也不违反monad法律之一吗?)