challenge 複数行のコメントアウト

言語の機能系の問題です。

ソースコードの複数行にまたがる範囲を、範囲の前後に何かを書き足すだけで実行しないようにしてください。 「その範囲を削除する」などはダメです。 何重まで入れ子にできるか、どのような制限があるかを明記してください。 例えばJavaであれば/*~*/で複数行のコメントアウトができますが、入れ子/* /* */ */にできません。 Pythonであれば"""~"""で文字列化することでコメントアウトでき、'''~'''も使えるので2重まで入れ子にできます。

このお題は、無制限に入れ子にできるCommon Lispからの挑戦状です。 プログラミングシンポジウムで前田敦司先生の発表を聞いて思いつきました。

Posted feedbacks - Common Lisp

何もしないマクロで囲む。入れ子も可能です。
1
2
3
4
5
6
7
(defmacro comment-out (&body body))

(print "hello.")
(comment-out
(print "how r u?")
)
(print "good bye.")

comment reader macro
1
1 #| comment #| nested comment |# comment |#    ;; => 1

↑は1行で書いてしまったが、もちろん複数行可能です。
1
2
3
1 #| comment
#| nested comment
|# comment |#          ;; => 1

Index

Feed

Other

Link

Pathtraq

loading...