gpt4 book ai didi

lambda - 在Scheme中柯里化(Currying)一个函数n次

转载 作者:行者123 更新时间:2023-12-01 23:48:34 25 4
gpt4 key购买 nike

我无法找出将函数柯里化(Currying)指定次数的方法。也就是说,我给函数一个自然数 n 和一个函数 fun,并且它对函数进行柯里化(Currying) n 次。例如:

(curry n fun)

该功能和可能的应用程序是:

(((((curry 4 +) 1) 2) 3) 4)

这将产生 10。

我真的不知道如何正确实现它。有人可以帮我一下吗?谢谢:)

最佳答案

您可以通过重复调用 curry 来编写自己的 n-curry 过程:

(define (n-curry n func)
(let loop ([i 1] [acc func])
(if (= i n)
acc
(loop (add1 i) (curry acc)))))

如果您使用 Racket,则可以使用 for/fold 迭代来表达得更简单:

(define (n-curry n func)
(for/fold ([acc func])
([i (in-range (sub1 n))])
(curry acc)))

无论如何使用它:

(((((n-curry 4 +) 1) 2) 3) 4)
=> 10

关于lambda - 在Scheme中柯里化(Currying)一个函数n次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552597/

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