2016-04-03 21 views
-2

Haskell'deki bir işlevin yazılması ile ilgili olarak, Gtk kullanarak (Gtk2Hs paketi aracılığıyla); Burada benim gereksinimleri şunlardır:affiche'yi kullanırken hata

  • fonksiyon imzaya sahip olmalıdır:

    affiche :: ((Double,Double), (Double,Double)) -> IO Bool 
    
  • parametreler belirtilmiştir (a0, a), (b0, b); işlev mandelbrot adında bir dış işlev kullanmalıdır: eğer mandelbrot (a, b) true ise, o zaman bir çağrı olmalıdır: postGUIAsync affiche2 a0 b0, nerede affiche2 (aynı zamanda affiche yazmak için denememi tanıttım):

    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 kullanmaz yazmak için girişimim ve hata yükseltir: kabul when ne çünkü, dönüş türü, IO() olmalıdır

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

cevap

2

Eğer when içinde affiche2 kullandığından s. Çalıştırmak için Render'un IO'a nasıl döndürüleceğini, renderWithDrawable ile nasıl olması gerektiğini öğrenmeniz gerekir.

+0

Merhaba, teşekkürler, artık derleme hatalarım yok, ancak pencerede hiçbir şey görüntülenmiyor. lütfen yeni soruma bir göz atın (şu anda yazıyorum) – lolveley

İlgili konular