タグ

ブックマーク / yosh.hateblo.jp (1)

  • Coqで依存型 - にわとり小屋でのプログラミング

    最近Agdaがはやっているみたいなので、Coqでも依存型(dependent type)を使ってみた。 実装したのは長さ n のベクトル型だ。このベクトル型を使うと、空でないとか、長さが等しいとかを型の段階で保証できるので、より安全なプログラムを書くことができるのだ。 Variable A:Set. Inductive Vec : nat -> Set := | VNil : Vec O | VCons : forall n, A -> Vec n -> Vec (S n). このベクトル型を使えば、コンパイル時に長さの整合性もチェックしてくれて、間違いがある場所を教えてくれる。コンパイルさえ通れば、OutOfBoundsExceptionのような実行時エラーは起こりえないことが保証される。 例えば、一般的にリストのhead関数は、引数が1以上の長さのときのみ定義でき、空リストの場合には値

    Coqで依存型 - にわとり小屋でのプログラミング
    bellbind
    bellbind 2008/07/16
    めんどうなとこはtacticであとはexactで本体を埋める、ということかな。Fixpointを書くのが難しいのは、どうするんだろう。
  • 1