COMMON LISP JP > Archives > 2011/10/12

2011/10/12 09:07:05 UTCeinblicker
#
はじめまして。
GoogleのDart言語だと動的型付けのコードと静的型付けのコード(不正な型でもエラーにはならず、警告が出るだけのようですが)が同じプログラム中に混ぜて書けるようなのですが、Lispにもこういう型システムを乗せる為の研究や実際に乗せてみた事例ってあったりするんでしょうか。せっかくCommon Lispには型を宣言する構文があるのだからDartのように活かさないと勿体無い気がします。
#
横に長くなってしまった。。。
2011/10/12 09:10:36 UTCshiro
#
Dartの静的型宣言って、実行時最適化の他には静的検査にも使えるんでしたっけ? 型宣言が正しいプログラムの振る舞いを変えないってとこはCommon Lispみたいだなあと思って読んでたんですが。
#
Common Lispの型宣言はほとんど最適化のためって感じですね。trivialな違反は警告を出してくれる処理系もありますが、関数をまたがって警告してくれるような処理系ってあったっけ?
2011/10/12 09:18:15 UTCeinblicker
#
ちょっと試してみただけですが使えるようです>静的検査
2011/10/12 09:19:49 UTCshiro
#
Common Lispに限らなければ、QiというLispは強力な型システムを持ってて、宣言すれば型推論もしてくれるけれど、全く動的型のように書くこともできたはず。
#
Common Lispでちょっとぐぐったら "Strong Static Type Checking for Functional Common Lisp" とかあったけどサブセットだしなあ。フルセットのCommon Lispにそのまま使えるような静的検証器があったら私も使いたい…
2011/10/12 09:22:16 UTCeinblicker
#
あ、Qiは私も一度試してみたことがあります。
でも静的な部分と動的な部分を組み合わせるところが、ちょっと使いづらい印象でした。。。
2011/10/12 09:26:34 UTCeinblicker
#
あ、なにか勘違いしていたかも。。。
2011/10/12 09:26:56 UTCshiro
#
SBCLha
#
SBCLは関数境界を越えたチェックもやってくれるみたいな http://paste.lisp.org/display/83830
2011/10/12 09:29:24 UTCeinblicker
#
ありがとうございます。調べてみます。