Haskell 哈斯克尔:为什么我不能使用liftM线路。获取内容

Haskell 哈斯克尔:为什么我不能使用liftM线路。获取内容,haskell,Haskell,我有getLinesIn=liftM行。getContents比 readAndWriteIn = do list <- getLinesIn readFile是一个函数FilePath->IO String,而getContents只是IO String,因此您不能使用()操作符将其与liftM行组合。你应该用 getLinesIn = liftM lines getContents 或 粘贴完整的编译器输出错误大致读取为“第二个参数()必须是函数(a0->m0 String),

我有
getLinesIn=liftM行。getContents

readAndWriteIn = do
  list <- getLinesIn

readFile
是一个函数
FilePath->IO String
,而
getContents
只是
IO String
,因此您不能使用
()
操作符将其与
liftM行
组合。你应该用

getLinesIn = liftM lines getContents


粘贴完整的编译器输出错误大致读取为“第二个参数
()
必须是函数(
a0->m0 String
),但它不是(
IO String
)”。
getLinesIn = liftM lines getContents
getLinesIn = fmap lines getContents