ML や Haskell でよく見る ' (プライム) 記号がうらやましかった件について

数学でよく使われる記号だと思うんですが、ML系のプログラムとか論文を読んでいると、1重引用符が識別子の後に付けられているのをよく見かけます。

ある関数の変種とか、ある変数に基づいて一時変数を作る時などに、いちいち新しい名前を考えなくて済むので便利なんですよね。

でも SchemeLisp では、この記号は quote の省略形という特別な意味を持っているので、使いたくても使えません。

で、何か良い案は無いものかとずっと思っていたんですが、ついに思い付きました。

チルダです。

(define (map~ f l)
  (cond ((null? l) l)
        ((f (car l))
         => (lambda (x)
              (cons x (map~ f (cdr l)))))
        (else
         (let* ((t (cdr l))
                (t~ (map~ f t)))
           (if (eq? t t~)
               l
               (cons (car l) t~))))))

emacs の一時ファイルみたいで、まさにぴったりという感じですよね。何で今まで気付かなかったんだろう…