1

現在、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

4

2 に答える 2