インデントによって構造化する構文ですが、使い勝手的に全然良くないので実際的にはこのままでは使えなさそうです。
比較演算子詰め合わせという感じで沢山定義されています。関数を返す関数をどんどん組み合わせて使いますが、その辺りがSchemeっぽいです。
折角なのでリーダーマクロを定義して混ぜて書けるようにしてみました。
動作
(= 55 #@ labels :group fib (n a1 a2) cond :group (zerop n) a2 :group (= 1 n) a1 :group T :group fib (1- n) (+ a1 a2) a1 :group fib 10 1 0 ) ;=> T
移植について
参照実装のreadは、改行等を読み捨てないようですが、CLのreadだと読み捨てるので、read-preserving-whitespaceを使う必要があります。■
0 件のコメント:
コメントを投稿