ML や Haskell でよく見る ' (プライム) 記号がうらやましかった件について
数学でよく使われる記号だと思うんですが、ML系のプログラムとか論文を読んでいると、1重引用符が識別子の後に付けられているのをよく見かけます。
ある関数の変種とか、ある変数に基づいて一時変数を作る時などに、いちいち新しい名前を考えなくて済むので便利なんですよね。
でも Scheme や Lisp では、この記号は 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 の一時ファイルみたいで、まさにぴったりという感じですよね。何で今まで気付かなかったんだろう…