なんどか似たようなネタでコードを書いている気がします。 矢印シンボルを用いて括弧の数を減らしてみます。矢印の`>'の個数で式を挿入する位置を決定するようにしてみました。 (defun arrow-symbol? (sym) (when (symbolp sym) (let ((name (symbol-name sym))) (and (<= 2 (length name)) (= (+ (count #\- name) (count #\> name)) (length name)) (string= (sort (copy-seq name) #'char<) name))))) (defun arrow-count (sym) (count #\> (symbol-name sym))) (defun collect-arrow-clauses (body) (do ((rest (