我以为是,liftM但类型签名似乎不正确.我希望有这样的功能:
someFunc :: Monad m => (a -> b) -> a -> m b
someFunc f = return . f
Run Code Online (Sandbox Code Playgroud)
我知道我可以用上面的代码来定义它,但我的直觉说这已经存在了,我只是因为某种原因而没有看到它.
例如:
main = do
n_tmp <- getLine
let n = read n_tmp :: Int
Run Code Online (Sandbox Code Playgroud)
VS
main = do
getLine >>= someFunc read :: IO Int
Run Code Online (Sandbox Code Playgroud)
或者我只是做了可怕的错误?