#:g1: ;|#

Posted 2019-11-02 19:13:57 GMT

;|# はかしこい

どうもiterateのバグを踏んでしまったようなのでソースを眺めていましたが、コード中の ;|# を目にしてこれは賢いなと以前から思っていたことを思い出しました。

#|
;; Optionally set up Slime so that C-c C-c works with #L
#+#.(cl:when (cl:find-package "SWANK") '(:and))
(unless (assoc "ITERATE" swank:*readtable-alist* :test #'string=)
  (bind ((*readtable* (copy-readtable *readtable*)))
    (enable-sharpL-reader)
    (push (cons "ITERATE" *readtable*) swank:*readtable-alist*)))
;|#

賢いというのは、#|;でコメントアウトしさえすれば、後ろの|#のメンテナンス(つまり消す)はしなくても良いというところ。

#|
(list 0 1 2)
;|#

(list 0 1 2)を復活したくなった →

;#|
(list 0 1 2)
;|#

Quicklisp中にどれくらい含まれているか検索してみましたが、iterateの他は、clazy、teepeedee2、で使われているくらいのようです。
案外少ないかも?

このブログはteepeedee2で運用されていますが、;|#は、teepeedee2のソースで最初に目にした気がします。


HTML generated by 3bmd in LispWorks 7.1.2

comments powered by Disqus