Haskell → Lazy K トランスレータ

Haskell Hackathon が楽しそうだったので、昔作りかけて放置してあった Haskell コンパイラを引っ張り出してきました。

せっかくなので、最もタメになる初心者用プログラミング言語であるところの Lazy K へのトランスレータにしてみました。

こんなのが動きます。

{- reverse lines -}
main :: Stream -> Stream
main stdin = toStream $ unlines $ reverse $ lines $ fromStream stdin

main の型が何やら変ですが気にしない方向で。

もちろん tarai も動きます。Intの実装がChurch数なので速くはないですが…。

$ hs2lazy Prelude.hs tarai.hs >tarai.lazy
$ time lazy tarai.lazy
122
lazy tarai.lazy  0.91s user 0.03s system 100% cpu 0.926 total

生成コードでかすぎ。

$ wc tarai.lazy
   1    1 5837 tarai.lazy 

詳しくは README を見てください。
そのうち実装メモとか書くかも。