我希望输入一个在函数 f 中定义的函数 f',以便它们的两个类型规范都引用同一个类型变量。但是,当我尝试这样做时,我从编译器中得到一个编译错误,它假定m
外部和m
内部不是同一个类型变量。有关如何解决此问题的任何提示?
f :: (Monad m) => (String -> Int -> String -> m ()) -> [String] -> m ()
f _ (x:_) = f' Nothing x
where
f' :: (Maybe Int) -> String -> m () -- when I comment this line, the code compiles
f' _ _ = return ()
main = undefined