Haskell → Lazy K トランスレータ
Haskell Hackathon が楽しそうだったので、昔作りかけて放置してあった Haskell コンパイラを引っ張り出してきました。
せっかくなので、最もタメになる初心者用プログラミング言語であるところの Lazy K へのトランスレータにしてみました。
- hs2lazy.tgz (最新版は github にあります)
こんなのが動きます。
{- 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 を見てください。
そのうち実装メモとか書くかも。