2013-06-01から1ヶ月間の記事一覧

パターンマッチ実装奮闘記(2)

前回は、簡単なパターンマッチを実装するのにLLVMを使う事にする事を考え、具体的なコードも書いてみました。 今回はどうやってLLVMにコンパイル出来るようになるかを考えます。 開発方針を決める事で、見通しが良くなるはずです。 コンパイラの作成段階 何…

パターンマッチ実装奮闘記(1)

はじめに パターンマッチが出来る簡単なコンパイラをつくりたいんだけど、作った経験がありません。とにかく1度作ってみたいのですがなかなか簡単に作る事が出来ません。 パターンマッチというと、正規表現がありますが、ここで言うパターンマッチとは、デ…

ラムダ計算を実装してみる

まず、OCaml版のラムダ計算があればうれしいので、ラムダ計算入門 *1 を参考に、TAPLのソースにあわせる形で、Scalaに書き換えてみました。 package _01lambda trait Term // λ式を表すデータ型 case class TmVar(s:String) extends Term // 変数 // 変数名…

ド・ブラン・インデックス 引き続きTAPLを読んでます。 TAPL*1のuntyped*2の実装でムツカシイところは、ド・ブラン・インデックスでした。 6章に詳しくかいてありますが、名前ではなくて環境中の何番目にあるかを持つ事で、宣言していない変数の参照をチェッ…