2016-04-03 21 views
-2

Haskellでの関数の記述に関しては、Gtk(パッケージGtk2Hs経由)を使用しています。ここに私の要件は次のとおりです。afficheを使用した場合のエラー

  • 機能が署名を持っている必要があります。

    affiche :: ((Double,Double), (Double,Double)) -> IO Bool 
    
  • パラメータは(A0、A)、(B0、b)は指摘しています。この関数は、mandelbrotという外部関数を使うべきです:mandelbrot(a、b)が真であれば、postGUIAsync affiche2 a0 b0の呼び出しが必要です。ここでaffiche2は(私もafficheを書き込もうとしました):

    affiche2 :: Double -> Double -> Render() 
    affiche2 a b = do 
        C.rectangle a b 1 1 
        stroke 
    
    affiche :: ((Double,Double), (Double,Double)) -> IO Bool 
    affiche ((a0,a), (b0,b)) = when (mandelbrot a b) $ affiche2 a0 b0 
    

afficheを書くために私の試みはpostGUIAsyncを使用していない、それはエラーが発生します。

Error: Couldn't match type ‘Render’ with ‘IO’ 
    Expected type: IO Bool 
    Actual type: Render() 

答えて

2

あなたはwhenaffiche2を使用しているので、その戻り値の型はIO()する必要があり、それが受け入れwhen何だからs。それを動作させるには、RenderIOに、具体的にはrenderWithDrawableに設定する必要があります。

+0

こんにちは、ありがとう、私はもはやコンパイルエラーはありませんが、何もウィンドウに表示されません。私の新しい質問を見てください(私は現時点でそれを書いています) – lolveley

関連する問題