我在mac OS X EL Captain上并尝试弄清楚如何发出EOF信号,但ctrl + D不起作用。我已使用stty all
确认终端eof = ^ D.
在Haskell中使用以下代码
Module Input where
import Data.List
import Data.Char
import System.IO (isEOF)
main =
interact (concat . sort . lines)
表达式永远不会给我任何标准 - 我尝试过ctrl + d,但没有任何反应。为什么是这样?
我在GHCI中运行此程序
答案 0 :(得分:2)
(注:关于在GHCI中运行程序的问题。)
根据9年前的gofmt,它不被视为错误。
您可以识别hSetBuffer stdin LineBuffering
和Control-D,但是当它回到REPL提示符并且会话将终止时,GHCI也会引发“句柄已关闭”错误:
$ ghci ./control-d.hs
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Input ( control-d.hs, interpreted )
Ok, modules loaded: Input.
*Input> import System.IO
*Input System.IO> hSetBuffering stdin LineBuffering
*Input System.IO> :main
jhskdfjhdf
jhskdfjhdf<stdin>: hGetBuffering: illegal operation (handle is closed)
$