タグ

2008年2月13日のブックマーク (3件)

  • 句構造文法から文を生成する:Rainy Day Codings:So-net blog

    Type 0 以下の句構造規則を与えられるとひたすらその言語に含まれる文を生成していくプログラムを Scala で書いてみました。 キューを用意して幅優先探索の要領で、 - キューには最初はスタートシンボルだけ入っている - キューから1つとって句構造規則で置き換えたものをまたキューに突っ込む - キューから取ったものが文の形をしていれば(終端記号だけで構成されていれば)それを結果とする というのを繰り返していきます。 import scala.collection.mutable._ import java.util.NoSuchElementException abstract class V case class NonTerminal(sym: Symbol) extends V { override def toString = sym.name} case class Term

  • Gauche のオブジェクトのなかみ - 言語ゲーム

    暇だったので Gauche のマニュアルを読んでいると、めっちゃ面白い事が分かった。特に、Smalltalk みたいなちゃんとしたオブジェクトがある所。今まで lisp はどれも emacs lisp と似たようなもんだと思ってたのでびっくり。そこで、http://squab.no-ip.com:8080/wiki/835 を基に、Gauche のオブジェクトを覗いてみた。 Bank Account まず Gauche のクラスを使って預金口座 を作る。define-class にクラス名と親クラス、そして要素の名前を書く。そして make で新しいインスタンスの作成。gosh 内では、さらに describe (d) を使って中を覗く事が出来る。 gosh> (define-class <bank-account> () (dollars)) <bank-account> gosh> (

    Gauche のオブジェクトのなかみ - 言語ゲーム
  • d.y.d. Pluggable Type Systems

    19:27 08/02/29 不動点ふたたび LtU で "Data Types a la Carte" を読みました。これの鍵となる技は「型コンストラクタに対する不動点演算子」だと思うのだけど、 あれ、なんで俺これ考えたことなかったんだ…?と不思議に思うくらい楽しげなアイデアですね。てい。 // 不動点演算子 via テンプレート。Dで。 // // Haskell でいう"普通の"不動点関数 fix f = f (fix f) と同じようなもの // = の代わりに継承になっちゃってますけど、まあ似たようなものです class Fix!(alias F) : F!(Fix!(F)) {} 不動点演算の実装は題ではないので、Yコンビネータみたいな無駄な複雑化はしない方針で。 さて、これを使って class Pair(T) { T left; T right; } 2個同じ型の値のペアを