我在这里关于Scheme/SICP提出了一些问题,很多答案都涉及使用apply
过程,但我在SICP中没有看到过它,在书的索引中只列出了一次,而且结果是一个脚注。
有些用法的示例基本上涵盖了回答这个问题的所有答案:Going from Curry-0, 1, 2, to ...n。
我对apply
工作原理很感兴趣,想知道是否有一些示例可用。如何将应用程序重新编写为另一个函数,例如像这样重写map
?
#lang sicp
(define (map func sequence)
(if (null? sequence) nil
(cons (func (car sequence)) (map func (cdr sequence)))))
看起来它可能只是用第一个参数进行函数调用?类似于:
(apply list '(1 2 3 4 5)) ; --> (list 1 2 3 4 5)
(apply + '(1 2 3)) ; --> (+ 1 2 3)
那么在Python中可能有类似的东西吗?
>>> args=[1,2,3]
>>> func='max'
>>> getattr(__builtins__, func)(*args)
3
nil
,那是 Lisp 的特性。 - Barmar#lang sicp
。 - David542