我试图理解为什么在这个简单的代码purescript
中无法正确推断参数的类型:map
maybeInc :: String -> StateT (Maybe Int) Identity Unit
maybeInc "a" = modify $ map (1 +)
maybeInc _ = return unit
这是我的错误信息:
找不到类型类实例 Control.Monad.State.Class.MonadState (_0 Int) (StateT(也许是 Int)身份) 实例头包含未知类型变量。考虑添加类型注释。
但是,如果我手动指定类型,它会起作用:
maybeInc "a" = modify $ \(m :: Maybe Int) -> map (1 +) m
为什么它不想自动推断这种类型,即使它已经在函数签名中提供?