このドキュメントによると:http://cl-cookbook.sourceforge.net/functions.html
(defun adder (n)
(lambda (x) (+ x n)))
(funcall (adder 12) 1)
私はfuncallを使用して呼び出す必要があります(加算器12)、そしてfuncallを何度も書くことは非常に無視されています、スキームでそれのようなコードを書く方法はありますか?
((adder 12) 1)
このドキュメントによると:http://cl-cookbook.sourceforge.net/functions.html
(defun adder (n)
(lambda (x) (+ x n)))
(funcall (adder 12) 1)
私はfuncallを使用して呼び出す必要があります(加算器12)、そしてfuncallを何度も書くことは非常に無視されています、スキームでそれのようなコードを書く方法はありますか?
((adder 12) 1)
いいえ、ありません。
機能として見ることもできます。関数オブジェクトの呼び出しを明示的にし、ソース コードの理解を向上させます。
ただし、次のようなものを使用することもできます(理由はわかりませんが、入力する文字数はSchemeの場合と同じになります)。
(set-macro-character
#\[
#'(lambda (stream char)
(declare (ignore char))
(set-syntax-from-char #\] #\;)
(let ((forms (read-delimited-list #\] stream t)))
(set-syntax-from-char #\] #\x)
(append '(funcall) forms))))
(defun adder (n)
#'(lambda (x) (+ x n)))
(format t "sum: ~s~&" [(adder 12) #x128]) ;; 308
角かっこが含まれる変数名に遭遇した場合、これにより問題が発生する可能性があります。確かに、それを使用するのはあなた次第です、あなた自身が警告されていると考えてください。