Haskell - Garbage collector

Sekcia: Programovanie 02.01.2008 | 16:24
Avatar Nathan <!--  Používateľ
Snažím sa napísať program, ktorý vyplní obsah grafického (HGL) okna po bodoch. Pri vačších rozmeroch okna však vždy program spadne s chybou "ERROR - Garbage collection fails to reclaim sufficient space". Viem, že zoznam 700x700 grafických prvkov je veľký na spracovanie v celku, ale generuje sa dynamicky a pri "lenivom" vyhodnocovaní haskellu by mal zabrať konštantný pamäťový priestor.. Kde sa teda hromadí toľko odpadu?

module Main where
import Graphics.HGL

dot :: Int -> Int -> Graphic
dot x y = line (x,y) (x+1,y)

main = runGraphics $
       do w <- openWindow "..." (700,700)
          sequence [drawInWindow w (dot x y)|x<-[0..700],y<-[0..700]]
          getButton w True False
          closeWindow w
<!--
    • Re: Haskell - Garbage collector 02.01.2008 | 18:08
      Avatar uid0 Debian  Používateľ
      tazko povedat, mozno sa neda vyuzit lazy evaluation v grafickom okne... ktovie, mozno je to len bug

      haskell poznam len z videnia a myslim, ze by si sa mal pytat niekde kde je vacsi vyskyt borcov cez haskell (skor niekde, kde sa hovori po anglicky, ale mozno pozeraju forum na abclinuxu ti spravni ludia)
      Debian. apt-get into it…
      • Re: Haskell - Garbage collector 02.01.2008 | 18:09
        Avatar uid0 Debian  Používateľ
        inac 700x700 nie je nejak vela
        Debian. apt-get into it…
        • Re: Haskell - Garbage collector 02.01.2008 | 20:43
          Avatar Nathan <!--  Používateľ
          Vdaka za snahu, uz som na to prisiel. Je jedno, ze sa zoznam vyhodnocuje lenivo, pretoze cela postupnost grafickych prvkov je vnutornym vysledkom runGraphics.. Napr. aj (mapM_ (putStr) (repeat "x")) mimo runGraphics funguje, ale vo vnutri uz nie. Takze uz len zistit, ako to obist :)
          <!--
          • Re: Haskell - Garbage collector 16.01.2008 | 01:26
            Avatar Nathan <!--  Používateľ
            Problém vyriešený definitívne, stačilo prejsť z hugsu na ghc. Zdá sa, že ten rieši problémy s pamäťou rozumnejšie..
            <!--