【发布时间】:2015-02-20 08:19:17
【问题描述】:
工作代码:
import System
main = do
[file1, file2] <- getArgs
--copy file contents
str <- readFile file1
writeFile file2 str
崩溃代码:
import System
main = do
[file1, file2] = getArgs
str = readFile file1
writeFile file2 str
当我尝试时,它抛出了一个错误:
a.hs:6:18:输入“=”时出现解析错误
那么,<- 与 = 有何不同?
【问题讨论】:
-
您需要了解 Monad de-sugaring 才能真正了解它的适用性。
-
@Sibi 这在技术上是正确的,但我觉得应该可以在不提及 M 字的情况下回答这个问题。毕竟m***ds只是纯语言处理IO的一种方式。即使 Haskell 没有在语言中内置 m****ds,它仍然会区分纯代码和不纯代码,并且这个问题(或类似问题)仍然存在。
-
@ChrisTaylor 虽然可以在不解释 Monad 的情况下回答这个问题,但我真的怀疑它是否会帮助 OP 掌握这个概念。话虽如此,这里有很多很好的答案。
标签: haskell