我的程序允许用户指定一个作为输入读取的文件,但这是可选的。如果用户没有指定文件,我想从命令行读取输入。
到目前为止,我有这个:
main :: IO()
main = do
(opts, mbArgs) <- parseCmdLine
input <-
case mbArgs of
Nothing -> getContents
Just file -> readFile file
这似乎不起作用。当用户没有规定文件时,他们可以输入输入,但似乎无法终止,以便程序可以对该输入进行处理。
我认为你必须按Ctrl + D,但这没有做任何事情。
感谢您的帮助。
答案 0 :(得分:9)
在典型的类Unix终端中(例如Cygwin,至少在Cygwin的rxvt
中;不确定Windows命令提示符), Ctrl + D 只在你开始一行时才发送EOF。如果你点击 Enter 然后 Ctrl + D ,它应该可以工作。如果您想在没有换行的情况下发送EOF,请连续两次点击 Ctrl + D 。
如果不是这样,那么你的终端可能还有其他一些问题;代码看起来很好。
答案 1 :(得分:0)
我要写哈马尔的评论作为答案。
在Windows上,对我来说,点击ctrl+Z
crtl+Z
enter
是有效的。