QiII

Haskell型推論が邪魔だった俺にはこれいいかも。

2. Lisp じゃなくて Qi で書く事の利点は何?
* Qi II は CAR / CDR を強制しない。かわりに、パターンマッチを使う事ができる。典型的な Qi プログラムは Lisp プログラムと比較して非空白文字が40%程度になる。
* Qi II はオプショナルな静的型チェックを備えている。実際のアプリケーションで、「神さま、プログラムが型エラーでクラッシュしませんように…」と祈る必要がなくなる。
* Qi II はラムダ計算と一貫性がある。Common Lisp で部分適用のような概念が利用できる。
* Qi II はとても速いコードを生成する。


4. ML や Haskell に比べて Qi で書く事の利点は?
Qi II は Lisp の上で動作します。 それは、つまり Qi II は ML や Haskell にない Lisp の特徴 ? マクロ、EVAL、ハッシュテーブル、プロパティリスト、メタプログラミングなど ? を受け継いているということです。 Qi II にとっては静的型付けはオプショナルです。もし型チェックが邪魔な場合には、それを使う必要はありません。


Prolog との接続の強化
Qi II は Edinburgh 構文 (M レベル構文) もしくは S 式 (S レベル構文) で記述された Prolog プログラムを許しています。 Qi II Prolog はホーン節の tail 部分への関数呼び出しの埋め込みを許しており、また Qi もしくは CL から Prolog を呼び出す prolog? マクロを備えています。

http://lispuser.net/commonlisp/qi.html

さわってみた感想
Lisp-2なCommonLisp上で動いているけど、Qi自体はSchemeと同じLisp-1
パターンマッチがデフォルトで使え、使う括弧がutil.matchよりも2レベル分少ない
prologのように同じ変数名を使って同値のパターンマッチができる
関数がカリー化されてる
遅延評価は明示的にfreezeとthawを書く必要あり
データとしてのリストは、'(a b c)を[a b c]や[a | [b c] ]と書く