如何修复haskell中的"输入解析错误"?

Kar*_*ick 5 haskell

Prelude Data.Set> :load hello
[1 of 1] Compiling Main             ( hello.hs, interpreted )

hello.hs:11:11: parse error on input `<-'
Failed, modules loaded: none.
Prelude Data.Set> h <- IO.openFile "testtext" IO.ReadMode
Prelude Data.Set> 
Run Code Online (Sandbox Code Playgroud)

hello.hs中的同一行[h < - IO.openFile"testtext"IO.ReadMode]抛出错误.我该如何解决?我究竟做错了什么?

[编辑]来源和输出:http://pastebin.com/KvEvggQK

sep*_*p2k 8

你只能<-do-block¹中使用(你在GHCI中隐含,但在Haskell文件中没有).

在Haskell文件中,您只能使用编写绑定=.

您可以做的是将以下内容放在Haskell文件中:

myHandle = do h <- IO.openFile "testtext" IO.ReadMode
              return h
Run Code Online (Sandbox Code Playgroud)

虽然如果你考虑一下这一点,这就是:

myHandle = IO.openFile "testtext" IO.ReadMode
Run Code Online (Sandbox Code Playgroud)

然而,这种方式myHandle仍然包含在内IO,你需要<-(或>>=)在ghci中解开它.

您不能以只加载文件的方式编写Haskell文件,将打开testtext并为您提供文件句柄.


¹或列表理解,但有正确的操作数<-需要成为一个列表,所以这与你的情况无关.