gpt4 book ai didi

functional-programming - Scheme/Racket 过滤/映射多个参数

转载 作者:行者123 更新时间:2023-12-04 08:41:09 26 4
gpt4 key购买 nike

假设我想执行以下操作:

(define (foo lst x)
(filter function lst)

但是 function 接受 2 个参数(function 是给我的),一个是它将使用的列表 lst,而另一个是 x。从句法上讲,我将如何更改该行以传递第二个参数?抱歉,我是 Scheme/DrRacket 的新手。

最佳答案

试试这个,使用 curry :

(define (foo lst x)
(filter (curry function x) lst))

也就是说,假设 functionx 作为第一个参数,将 lst 中的每个元素作为第二个参数。换句话说,以上等同于:

(define (foo lst x)
(filter (lambda (e) (function x e))
lst))

无论哪种方式:诀窍(称为 currying )是创建一个接收单个参数的新函数,并将其传递给原始函数,该函数将另一个参数固定为给定的 x 值(value)。

在您的问题中,不清楚我们应该以何种顺序传递参数,但是一旦您理解了这里的基本原理,您就能够弄明白。

关于functional-programming - Scheme/Racket 过滤/映射多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728131/

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