我是Haskell的新手并尝试在Windows机器上进行设置。我得到它编译,但当我运行.exe文件时,程序运行并立即退出,几乎没有显示输出。
以下是我创建的示例代码
module Main where
m = 2 * n
n = f 4
--functions
f::Int -> Int
f x = 2 * x
g::Int -> Int -> Int
g x y = 2 * x * y
main = do
x <-getChar --used to pause program
print m
print $ f m
print $ g m n
我使用getChar暂停程序,直到按下某个键。我一直试图弄清楚如何在打印陈述之后做一些关键事件退出。我怎么能这样做,有没有更好的方法?
答案 0 :(得分:4)
如果您通过单击它在Windows中运行程序,那么它将获得自己的终端窗口,该窗口本身会在程序执行后退出。我想这就是你所做的,或类似的。
但是如果您改为使用DOS提示启动一个终端窗口,并从那里运行程序,那么该程序结束后该窗口将继续存在并且您可以看到您的输出。
您也可以使用:main
命令从GHCi或WinGHCi内部运行程序。
最后,您的x <- getChar
几乎几乎在main
结尾处工作,但是规则是do
块中的最后一个语句必须是表达式,因此它不能绑定变量。但您没有使用x
进行任何操作,因此您只需删除x <-
部分:
main = do
print m
print $ f m
print $ g m n
getChar --used to pause program