タグ

ブックマーク / smpl.seesaa.net (2)

  • MinCaml読解ノート: K正規化

    K正規化の意味 K正規化は、複雑な計算の途中結果全てを変数として定義する。 これによって複雑な式が一連の単純な式に分解され、プログラムは順序づけられた単純な計算の繰り返しに姿を変える。 K正規化後の型であるKNormal.tにもそれが表れている。 type t = | Add of Id.t * Id.t | Sub of Id.t * Id.t | ... | IfEq of Id.t * Id.t * t * t | IfLE of Id.t * Id.t * t * t | Let of (Id.t * Type.t) * t * t | LetRec of fundef * t | LetTuple of (Id.t * Type.t) list * Id.t * t 全ての演算や関数適用は、式KNormal.tではなく変数Id.tをオペランドにとるようになり、KNormal.tを

    MinCaml読解ノート: K正規化
    becoming
    becoming 2008/01/19
  • Common Lisp: loopマクロ用法抄

    GrahamのANSI Common Lispでは嫌われていて碌に説明のないloopマクロ。一方、Practical Common Lispでは対照的に好んで用いられていて、全編に渡って頻繁に使われている。しかしloopマクロは難しいという意識があるのかその説明は第22章とかなり後回しにされており、ちぐはぐな感を受ける。ここでは、LOOP for Black-Belts という題のつけられたその章で解説されているloopマクロの用法を整理してみた。 ANSI Common Lispでの黒魔術扱いに敬遠していたloopマクロだったが、こうして整理してみるとそれほど難しく考えずとも便利に使うことができそうだ。 目次 繰り返し 計数繰り返し コレクション内繰り返し 変数更新しながら繰り返し ループ終了条件の追加 アクション 集約 ループ内ローカル変数 任意の式の実行 条件分岐 ループ中断 その他

    Common Lisp: loopマクロ用法抄
  • 1