Я написал реализацию Common Lisp комментариев s-выражения Scheme (SRFI 62):
(eval-when (:compile-toplevel
:load-toplevel
:execute)
(defun handle-s-expression-comment (stream char n)
(declare (ignore char))
(when n
(error "Infix parameter not allowed in s-expression comment."))
(read stream) ; Discard the next s-expression.
(values))
(set-dispatch-macro-character ## #; #'handle-s-expression-comment))
С комментариями s-выражения:
(+ 1 #;(* 2 3) 4)
возвращается5
(list 'x #;'y 'z)
возвращается(x z)
(* 3 4 #;(+ 5 6))
возвращается12
(#;sqrt abs -123)
возвращается123
Моя реализация верна? Какие улучшения я могу сделать?