gpt4 book ai didi

scheme - SICP/Scheme中的apply函数

转载 作者:行者123 更新时间:2023-12-04 22:34:17 26 4
gpt4 key购买 nike

我在这里问了几个关于 Scheme/SICP 的问题,答案经常涉及使用 apply 过程,我在 SICP 中没有看到过,在本书的索引中,它只列出了一次,结果是脚注。

一些使用示例基本上是这个问题的每个答案:Going from Curry-0, 1, 2, to ...n .

我对apply 的工作原理很感兴趣,我想知道是否有一些可用的示例。怎么把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

最佳答案

apply 用于调用具有动态数量参数的函数。

您的 map 函数只允许您调用仅接受一个参数的函数。您可以使用 apply 使用可变数量的列表来映射具有不同数量参数的函数。

(define (map func . sequences)
(if (null? (car sequences))
'()
(cons (apply func (map car sequences))
(apply map func (map cdr sequences)))))

(map + '(1 2 3) '(4 5 6))
;; Output: (5 7 9)

关于scheme - SICP/Scheme中的apply函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68026340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com