dependent typeとepigram

[id:lethevert:20050717:p1]でyubさんからいただいたコメントを見て、「dependent type」と「epigram」について調べてみました。
epigram : http://www.dur.ac.uk/CARG/epigram/
参考)http://en.wikipedia.org/wiki/Epigram_programming_language
参考)http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20050528#p01
公式ホームページのトップには「Epigram is a dependently typed functional programming language.」と書いてあります。Haskell風の文法に「dependent type」をサポートした言語のようです。サンプルはこんな感じ(http://www.dur.ac.uk/CARG/epigram/example1.epi)。一見アスキーアートみたいです。epigramに関する日本語の資料は皆無でした。実験的な言語みたいです。
dependent typeとは「依存型」と訳され、型を動的に生成することができる機能のようです。つまり、値をとって型を返す関数を定義できるということらしいです。dependent type自体、まだ研究途上の技術のようで、実装も固まっていないようです。
参考)[id:tanakh:20040924:p2]
参考)http://wiki.ocaml.jp/index.php?%BA%A3%BD%B5%A4%CEOCaml <- 「DML/de Caml」の項目
で、「Design by Contract」との関係ですが・・・、どう応用すれば対応できるのだ(・_・?)
えと、[id:lethevert:20050718:p1]のコメントで指摘したように、class NaturalNumberなどを作れば、任意の集合を型にできる(この場合は、自然数)ので、それを使えば可能なのですが、この場合、動的に型を生成する必要はないです。ただし、dependent typeに対応した言語は、型の氾濫を上手く処理する機構があるかもしれないので、そこの部分に期待でしょうか?ただ、オブジェクト指向ではない言語だと、class NaturalNumberのような表現はできないかも。