von*_*dip 2 monads haskell threepenny-gui
这是一个后续的问题这个.我在Haskell中使用一个名为Threepenny-GUI的图形库.在这个库中,main函数返回一个UImonad对象.我正在尝试执行一个简单的打印命令但没有成功.什么是正确的解决方案来启用打印以进行调试.
码:
main :: IO ()
main = startGUI defaultConfig setup
setup :: Window -> UI ()
setup w = do
print "debug message 1 "
Run Code Online (Sandbox Code Playgroud)
错误:
Couldn't match type ‘IO’ with ‘UI’
Expected type: UI ()
Actual type: IO ()
In a stmt of a 'do' block: print "labels and values "
Run Code Online (Sandbox Code Playgroud)
根据类型,这是一个很好的应用liftIO.liftIO有一个类型MonadIO m => IO a -> m a所以它可以像这样使用:
liftIO (print "debug message 1")
Run Code Online (Sandbox Code Playgroud)
该表达式的类型可以是,UI ()因为它UI是一个实例,MonadIO并且print "debug message 1"具有类型IO ().