きくらげ観察日記

好きなことを、適当に。

Gaucheのコメントいろいろ

なんか今更な気もしますが……。

行コメント

セミコロン(;)から行末まではコメントとみなされます。セミコロンの数にも作法があるみたいです。

;;; モジュール自体の説明とか、大きなコードブロックの説明
;;;
;;; このモジュールはフィボナッチ数を生成するジェネレーターを提供するなんやかんやです。

(use gauche.generator)

;; 次にくる同じインデントレベルのコードの説明
;; フィボナッチ数を順番に返すジェネレーターを返す関数
(define (fib)
  (generate ; セミコロン1つはその行の処理の説明
   (^(yield)
     ;; メインループ。firstが現在の、secondが次のフィボナッチ数を表す
     (let loop ((first 1)
                (second 1))
       (yield first) ; n番目のフィボナッチ数をyieldする
       (loop second (+ first second))))))

ブロックコメント

#| ... |# の間は改行とか関係なくすべてコメントになります。

(define (fib)
  (generate
   (^(yield)
     #|
        なんと、
        ここでは
        #|
           フィボナッチ数を生成しています!!!
        |#
        コメントはネストできる
     |#
     (let loop ((first 1)
                (second 1))
       (yield first)
       (loop second (+ first second))))))

S式コメント

#;は直後のS式を1つコメントアウトします。
式単位でコメントアウトできるのは面白い機能ですね。

(define (fib)
  (generate
   (^(yield)
     (let loop ((first 1)
                (second 1)
                #;(third 1)) ; 3番目の数とかいらんかった
       (yield first)      ;↑ここの閉じ括弧はコメントアウトされない!!
       (loop second (+ first second))))))