3

これはこれに対するフォローアップの質問ですThreepenny-GUIという Haskell のグラフィック ライブラリを使用しています。このライブラリでは、メイン関数はUIモナド オブジェクトを返します。簡単な印刷コマンドを実行しようとしていますが、成功しません。デバッグ目的で印刷を有効にするための適切な回避策は何ですか。

コード:

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 "
4

1 に答える 1

5

タイプに基づいて、これは の優れたアプリケーションですliftIOliftIO型があるMonadIO m => IO a -> m aので、次のように使用できます。

liftIO (print "debug message 1")

その式の型は、 のインスタンスであり、型を持っているUI ()ため、次のことができます。UIMonadIOprint "debug message 1"IO ()

于 2015-06-22T19:58:34.143 に答える