【发布时间】:2018-02-28 06:56:40
【问题描述】:
转发通知,这是我使用 Haskell 的第一天。
所以我有一个函数parse :: String -> String,我正试图通过标准将文件传递给它,
input <- readFile "input.txt"
或其他标准,
handle <- openFile "input.txt" ReadMode
input <- hGetContents handle
我想表演的,
output <- unlines $ map parse $ lines input
(或者应该是规范格式)
现在据我了解, readFile 返回一个字符串,lines 接受一个字符串并返回一个字符串列表,并且 map 应该映射到一个字符串列表。如果这是真的,那么为什么lines input 告诉我得到了一个 [String] 而不是一个 String,而省略了 lines 而只有 map parse input 告诉我它得到了一个 String 而不是一个 [String]?
【问题讨论】:
-
“readFile 返回一个字符串”。不,it doesn't。
-
@MarkSeemann 好吧,函数不会返回字符串,但它会“返回”
IO隐喻意义上的字符串。 -
您似乎不了解 monad 和
do-notation 的工作方式。我可以建议阅读the relevent LYAH chapter? -
@AJFarmar 他们声称这是他们使用 Haskell 的第一天。如果他们知道 Monad 和 do 表示法的工作原理,我会感到震惊。
-
LYAH IO chapter 可能更有用。
标签: haskell