Haskell UI做子句,如何打印?
Haskell UI do clause, how to print?
这是 . I'm using a graphic library in Haskell called Threepenny-GUI. In this library the main function returns a 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 "
基于类型,这是 liftIO
的一个很好的应用。 liftIO
有一个类型 MonadIO m => IO a -> m a
所以它可以像这样使用:
liftIO (print "debug message 1")
该表达式的类型可以是 UI ()
,因为 UI
是 MonadIO
的一个实例,而 print "debug message 1"
的类型是 IO ()
.
这是 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 "
基于类型,这是 liftIO
的一个很好的应用。 liftIO
有一个类型 MonadIO m => IO a -> m a
所以它可以像这样使用:
liftIO (print "debug message 1")
该表达式的类型可以是 UI ()
,因为 UI
是 MonadIO
的一个实例,而 print "debug message 1"
的类型是 IO ()
.