括弧いらなかった
funcallで呼び出すからdefunじゃなくてdefvarとかで良い事に気付いた。
(defun app (&rest arg) (reduce #'funcall arg)) (defun $ (&rest arg) (reduce #'funcall arg :from-end t )) (defun charfn (code) (lambda (&optional (a nil)) (if a (if (= code (funcall a)) (lambda (x) (lambda (y) x)) (lambda (x) (lambda (y) y))) code))) (defvar out (lambda (chr) (write-char (code-char (funcall chr))) chr)) (defvar succ (lambda (chr) (charfn (mod (1+ (funcall chr)) 256)))) (defvar w (charfn (char-code #\w))) (defvar in (lambda (chr) (let ((i (read-char))) (if i (charfn (char-code i)) chr)))) ($ out succ in w)
すっきり。
あー。計算ばっかしてないでちゃんと勉強しよう。
マクロとかも全然使えてないし。