現在、Alexandria でカリー化された関数は、curry
で呼び出す必要がありますfuncall
。ただし、新しい関数を設定して、symbol-function
それを使用せずに実際の関数のように扱うことができます。https://lispcookbook.github.io/cl-cookbook/functions.html#with-the-alexandria-libraryに示されています:
(defun adder (foo bar)
"Add the two arguments."
(+ foo bar))
(defvar add-one (alexandria:curry #'adder 1) "Add 1 to the argument.")
(funcall add-one 10) ;; => 11
(setf (symbol-function 'add-one) add-one)
(add-one 10) ;; => 11
;; and still ok with (funcall add-one 10)
両方のスタイルを許可しない正当な理由はありますか? これは、カリー化のこのコンテキストでは非常に興味深いようです。
追記: 3 週間ほど前に Alexandria の問題トラッカーで質問しました
pps: https://gitlab.common-lisp.net/alexandria/alexandria/blob/master/functions.lisp#L116