停止程序在完成后退出

Stopping a program from exiting after completion

我是 Haskell 的新手,正在尝试在 windows 机器上进行设置。我让它编译但是当我 运行 .exe 文件时,程序 运行s 并立即退出,几乎没有显示输出。

下面是我创建的示例代码

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 暂停程序,直到按下某个键。我一直在尝试弄清楚如何在打印语句之后执行类似退出的操作。我该怎么做,还有更好的方法吗?

如果您 运行 您的程序在 Windows 中通过单击它,那么它会获得一个终端 window 自己的终端,一旦程序运行,它就会自行退出。我想这就是你所做的,或类似的。

但是如果你改为启动一个带有 DOS 提示符的终端 window,然后从那里 运行 程序,那么 window 将在程序结束后继续存在,你可以看到你的输出。

您还可以使用 :main 命令从 GHCi 或 WinGHCi 内部 运行 程序。

最后,您的 x <- getChar 可以 几乎main 结束时工作,但是有一条规则是 [=14= 中的最后一个语句] 块必须是一个表达式,所以它不能绑定一个变量。但是你没有使用 x 做任何事情,所以你可以删除 x <- 部分:

main = do
    print m
    print $ f m
    print $ g m n
    getChar --used to pause program