應用功能

如果你有一個列表,並且你想使用該列表的元素作為函式的引數,你想要的是 apply

> (apply string-append (list "hello" " " "and hi" " " "are both words"))
"hello and hi are both words"
> (apply + (list 1 2 3 4))
10
> (apply append (list (list "a" "b" "c") (list 1 2 3) (list "do" "re" "mi")))
(list "a" "b" "c" 1 2 3 "do" "re" "me")

apply 有兩個引數。第一個引數是要應用的函式,第二個引數是包含引數的列表。

一個 apply 的呼叫就像

(apply + (list 1 2 3 4))

相當於

(+ 1 2 3 4)

apply 的主要優點是它適用於任意計算列表,包括來自函式引數的附加列表和列表。

> (apply + (append (list 1 2 3 4) (list 2 3 4)))
19
> (define (sum lst)
    (apply + lst))
> (sum (list 1 2 3 4))
10
> (sum (append (list 1 2 3 4) (list 2 3 4)))
19

有關更多資訊和示例,請參閱 球拍指南”中apply 功能