2009-05-01から1ヶ月間の記事一覧

トランポリンの代わりにgotoを使う

値としてのラベル GCCはいろいろな独自拡張があるけど,その1つにラベルの指すアドレスを値として取得する機能がある. void *address = &&label; ... label: ... goto *address;のように&&演算子をラベル名の前に付けると,そのラベルのアドレスを取り出す…

CPS変換まとめ

CPS変換の手法にもいろいろある.前提として,λ式は以下のような構文で定義されているとする. M, N ::= x | λx.M | M N CPS(継続渡し形式)とは,計算が行われる順序を明示するために,ある式の計算結果を,残りの計算を表す継続(途中結果を受け取り,残り…