忽然觉得对于很常用的单参数匿名函数,搞个简单又优雅的语法
以前我是用$(+ $1 $2 $3) ,单参数时用*代表参数名 $(+ 1 2 *)
现在觉得相对λ 来说$没那么优雅,所以替换下:
(defun lambda-char (stream char)
"A lambda with only ONE arg _"
(declare (ignore char))
(let ((codes (read stream nil)))
`(lambda (_) ,codes)))
(set-macro-character #\λ #'lambda-char t)
λ(+ 1 2 _) ; => (lambda (_) (+ 1 2 _))
但是λ这类希腊字符一般大家是怎么输入的啊? 我现在只能在 emacs 绑定个快捷键(或者 yas)
(defun λ ()
(interactive)
(insert "λ()")
(left-char 1))
(global-set-key (kbd "M-l") 'λ)
`