2012-05-29 11 views
5

Jestem programistą Haskell (generalnie implementuję algorithms in Haskell) i próbuję zrozumieć bibliotekę HOOPL, ale nie jestem w stanie jej odkodować. Nie mam tła kompilatora (obecnie uczę się od Coursery i kompilatorów: zasad, technik i narzędzi) i byłoby wspaniale, gdybyś mógł zasugerować mi systematyczny sposób postępowania dla zrozumienia biblioteki HOOPL (jaki jest warunek wstępny). Powiedzmy mam mały kod Haskell, na którym chcesz zastosować optymalizację przepływu danych przy użyciu HOOPLOptymalizacja przepływu danych za pomocą HOOPL

add :: Int -> Int -> Int 
add x y = z where 
    x' = 1 
    y' = 1 -- this will be dead code elimination 
    z = x' + 1 

Jak napisać kod HOOPL celu optymalizacji tego. Byłoby wspaniale, gdybyś mógł dać nieco lepszy przykład i wybaczyć mi, gdybym brzmiał głupio.

+0

Nie mówisz głupio. [Ten dokument] (http://research.microsoft.com/en-us/um/people/simonpj/papers/c--/dfopt-popl10.pdf) wygląda na całkiem czytelny i wydaje się eliminować martwe kody. – jberryman

Odpowiedz

5

Dobrym miejscem na rozpoczęcie jest ciągnięcie repozytorium git, które ma wiele dodatkowych plików w porównaniu do tego, co jest w Hackage. Zajrzyj do podkatalogu testing i zobaczysz prosty kod definiujący podstawowy imperatywny język i niektóre optymalizacje na nim.

Powiązane problemy