コメント


Tags: R6RS, コーディングスタイル

行コメント

; コメントはコメント対象と同一行に置き、複数連続する場合には桁位置をそろえることが好ましい。

;; コメントはコメント対象の前の行に置き、通常のコードと同様にインデントを揃える。

;;; コメントはコードのまとまりに対するコメントとしてつける。位置は左端に揃える。典型的な使用例としてはプログラム内での設計原理についての説明がある。関数内の行をコメントアウトするのにもこの形式を使う。

;;;; コメントはヘッダとして使う。典型的な使用例はファイルヘッダなどである。

;;;; my-util.sls - some utility procedures for my own use.
;;;; License should be wrote here?
(library (my-util)
  (export map*)
  (import (rnrs))

;;; RnRS' map takes lists, each of which has the same length.
;;; But the version takes lists unequal in length is often useful.

  ;; similar to map, but may takes lists unequal in length.
  (define (map* f xs . xss)
    (if (null? xss)                     ; fast path
        (map proc xs)                   ; same as the RnRS' map
        (let loop ((xs xs)
                   (xss xss)
                   (rs '()))
          (if (or (null? xs) (exists null? xss))
              (reverse rs)
              (loop (cdr xs)
                    (map cdr xss)
                    (cons (apply proc (car xs) (map car xss)) rs))))))
  )

Cf. CLHS: Section 2.4.4.2, GNU Emacs Lisp Reference Manual

#;

ある式を一時的にコメントアウトして他の値を代わりに与える場合には #; コメントが便利である。

(let ((w (* *weight* 2)))
  ...)

(let ((w #;(* *weight* 2) 3)) ; change weight temporarily
  ...)

#| ... |#

コードの大きなまとまりをコメントアウトするには #| ... |# コメントを使う。 #| ... |# コメントは入れ子にすることができるので C の #if 0 〜 #endif のように使うことができる。

;;; TODO: implement later on
#|
(define (some-complicated-procedure arg . args)
  ...)

...
|#