2005-11-11 [長年日記]
λ. 人狼審問 : (950)湿地の村
今回は確定霊能者で初回襲撃されてずっと墓下だったけど、 ようやくエピローグで皆と再会。 全然活躍できなかったけど、久しぶりの勝利なので一応嬉しい。
関連リンク
- B1/950村 - 人狼ファンWiki
- 他の人の感想
λ. yhc - York Haskell Compiler
[Haskell] [ANNOUNCE] yhc - York Haskell Compiler , Thomas Davie より。
nhc98をベースにしたhaskellコンパイラ。
「λ」を上下反転した「y」がカッコいい。
試しに適当なコードをコンパイルしてみる。
% cat Fact.hs module Fact where fact :: Int -> Int fact 0 = 1 fact n = n * fact (n-1) main :: IO () main = putStrLn $ show $ fact 10 % yhc -bcodecompile Fact.hs ====== BCode after compilation: FUN Fact;fact{188}(1/0) ["v215"] STACK 2 { PUSH_ARG 0 1 <["215"] | {"215"}> EVAL 1 <[] | {}> INT_CASE {0 -> L_2, _ -> L_4} 1 <[] | {}> L_2 1 <[] | {}> POP 1 0 <[] | {}> PUSH_INT 1 1 <[] | {}> JUMP L_3 1 <[] | {}> L_4 1 <[] | {}> POP 1 0 <[] | {}> JUMP L_0 0 <[] | {}> L_3 1 <[] | {}> JUMP L_1 0 <[] | {}> L_0 0 <[] | {}> PUSH_INT 1 1 <[] | {}> PUSH_ARG 0 2 <["215"] | {"215"}> MK_AP 0 2 1 <[] | {}> MK_AP 1 1 1 <[] | {}> EVAL 1 <[] | {}> PUSH_ARG 0 2 <["215"] | {"215"}> EVAL 2 <[] | {}> MUL_W 1 <[] | {}> L_1 1 <[] | {}> RETURN 1 <[] | {}> } ---- ConstTable --------------- 0 FUN Prelude;Prelude.Num.Prelude.Int.-{213} 1 FUN Fact;fact{188} ------------------------------- FUN Fact;main{189}(0/0) [] STACK 2 { PUSH_INT 10 1 <[] | {}> MK_AP 0 1 1 <[] | {}> PUSH_CONST 1 2 <[] | {}> MK_AP 2 2 1 <[] | {}> PUSH_CONST 3 2 <[] | {}> MK_AP 2 2 1 <[] | {}> EVAL 1 <[] | {}> RETURN 1 <[] | {}> } ---- ConstTable --------------- 0 FUN Fact;fact{188} 1 FUN0 Prelude;Prelude.Show.Prelude.Int.show{214} 2 FUN Prelude;${43} 3 FUN0 Prelude;putStrLn{45} -------------------------------
【2006-04-28追記】 Unicodeの文字はまだ扱えないようだ。hbcファイルのフォーマットがUnicodeの文字を扱えるようになっていない。
% cat UnicodeTest.hs main = print ('\x10ffff') $ yhc UnicodeTest.hs Compiling Main ( UnicodeTest.hs ) yhc.exe: wUByte of 1114111