【发布时间】:2015-09-08 09:57:22
【问题描述】:
这是this 的后续问题。我在 Haskell 中使用了一个名为 Threepenny-GUI 的图形库。在这个库中,主函数返回一个UI monad 对象。我正在尝试执行一个简单的打印命令,但没有成功。什么是启用打印以进行调试的正确解决方法。
代码:
main :: IO ()
main = startGUI defaultConfig setup
setup :: Window -> UI ()
setup w = do
print "debug message 1 "
错误:
Couldn't match type ‘IO’ with ‘UI’
Expected type: UI ()
Actual type: IO ()
In a stmt of a 'do' block: print "labels and values "
【问题讨论】:
-
您的
do块必须只包含一个monad(即UI或IO,但不能同时包含两者)。如果你想在 Haskell 中调试,调试器可能会很有用。 -
那我如何支持打印呢?
-
您应该尝试在代码块中保留 Haskell 代码的格式。您问题中的代码存在解析错误,因为
print之前没有空格。有帮助的一件事是 StackOverflow 快捷键 Ctrl-k。如果您突出显示问题或答案中的文本块并按 Ctrl-k,它将每行缩进 4 个空格。据我所知,这个快捷方式并没有在任何地方正式记录,但它很方便。
标签: haskell monads threepenny-gui