でっかい括弧 — #:g1

Posted 2011-11-20 14:59:00 GMT

まあ、一発ネタなんですが、Unicode表を眺めていたら、でっかい括弧を発見しまして、あれ、これってCLでちゃんと使えるんじゃないかと思ったので、試してみました。

(progn
  (set-macro-character #\⎛
                     (lambda (srm char)
                       (declare (ignore char))
                       (read-delimited-list #\⎠ srm t)))

(set-macro-character #\⎜ (lambda (srm char) (declare (ignore char srm)) (values)))

(set-macro-character #\⎟ (lambda (srm char) (declare (ignore char srm)) (values)))

(set-macro-character #\⎞ (lambda (srm char) (declare (ignore char srm)) (values)))

(set-macro-character #\⎝ (lambda (srm char) (declare (ignore char srm)) (values)))

(set-syntax-from-char #\⎠ #\)))

⎛defun fib (n)          ⎞
⎜ ⎛if (< n 2)          ⎞⎟
⎜ ⎜   n                ⎟⎟
⎜ ⎜   ⎛+ (fib (1- n)) ⎞⎟⎟
⎝ ⎝   ⎝  (fib (- n 2))⎠⎠⎠

⎛fib ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ 10 ⎠ ;=> 55

ご覧のようにリーダーマクロを適切に設定すれば使えました! Common Lisp素晴らしい! ちなみに、括弧の縦棒ですが、ちゃんと左右別個の文字なので、これを対として括弧として利用できたりもするでしょう。無限の可能性を感じます。 ただエディタの支援がないと入力がめんどうです。 ■

comments powered by Disqus