【发布时间】:2012-03-08 19:50:32
【问题描述】:
我有一个 Haskell 程序,它显示一个提示,然后接受来自命令行的输入。我这样做是:
main = do putStr "Please enter program source file name: "
programFileName <- getLine
programFileHandle <- openFile programFileName ReadMode
program <- hGetContents programFileHandle
putStr "Please enter initial file configuration file name: "
initConfigFileName <- getLine
initConfigFileHandle <- openFile initConfigFileName ReadMode
initConfigStr <- hGetContents initConfigFileHandle
print (evaluateProgram (lines program) (readReg initConfigStr))
当我在 GHCi 解释器上运行它时,提示显示正常,我可以输入我的输入(其他一切正常)。
例如 *主要>主要 请输入程序源文件名:sum.urm 请输入初始文件配置文件名:sum.conf 9
当我编译它时(在 Mac OS X 或 Windows 上),它会生成一个不显示我的提示的可执行文件。它等待两个输入字符串,然后一旦我输入了有效的文件名,它就会打印提示和结果。
例如
$ ./a.out
sum.urm
sum.conf
Please enter program source file name: Please enter initial file configuration file name: 9
任何想法为什么会发生这种情况?
出于好奇,我在 Haskell 中实现了 Unlimited Register Machine。
【问题讨论】:
标签: haskell