这有效:
c <- fmap lines (readFile "d:\\tmp\\h.txt")
let h = map (read :: String -> Int) c
而那些没有编译的那两条线的“叠加”
fmap (read :: String -> Int) $ fmap lines (readFile "d:\\tmp\\h.txt")
它会产生错误:
互动:1:36: 无法将预期类型“Char”与实际类型“[Char]”匹配 预期类型:字符串 -> 字符串 实际类型:字符串 -> [字符串] 在`fmap'的第一个参数中,即`lines' 在 `($)' 的第二个参数中,即 `fmap 行 (readFile "d:\\tmp\\h.txt")
为什么它不编译以及如何在一行中执行此操作?我想要的是实现python的简单性
[int(i) for i in open("d:\\tmp\\h.txt")]