これは機能します:
(+ 1 2 3)
6
これは機能しません:
(+ '(1 2 3))
これは、 'cl-*
'がロードされます:
(reduce '+ '(1 2 3))
6
reduce
が常に利用可能であれば、次のように書くことができます。
(defun sum (L)
(reduce '+ L))
(sum '(1 2 3))
6
sum
などの関数を定義するためのベストプラクティスは何ですか?
(apply '+ '(1 2 3))
線形再帰関数(合計L)
;;
;; sum
;;
(defun sum(list)
(if (null list)
0
(+
(first list)
(sum (rest list))
)
)
)
カスタム関数を定義して、渡されたリストの合計を計算できます。
(defun sum (lst) (format t "The sum is ~s~%" (write-to-string (apply '+ lst)))
EVAL: (sum '(1 4 6 4))
-> The sum is "15"