gpt4 book ai didi

crystal-lang - Crystal 郎 curry

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

我尝试在 Crystal 中创建 curried add proc。如何使这个例子工作?

semi_curry = ->(f: Proc(Int32, Int32)) { ->(a: Int32) { ->(b: Int32) { f.call(a, b) } } }

add = ->(a: Int32, b: Int32) {a + b}

p semi_curry(add).call(5).call(6)

https://play.crystal-lang.org/#/r/3r0g

我得到错误

没有重载匹配类型为 Int32、Int32 的 'Proc(Int32, Int32)#call'重载是: - Proc(T, R)#call(*args : *T)

最佳答案

来自 the proc documentation , Proc(Int32, Int32) 是一个接受一个 Int32 并返回一个 Int32 的过程。您的意思是使用 Proc(Int32, Int32, Int32)。此外,您需要使用 semi_curry.call(add).call(5).call(6)

semi_curry = ->(f: Proc(Int32, Int32, Int32)) { ->(a: Int32) { ->(b: Int32) { f.call(a, b) } } }

add = ->(a: Int32, b: Int32) {a + b}

p semi_curry.call(add).call(5).call(6)

https://play.crystal-lang.org/#/r/3r0m

如果你想在你的应用程序中柯里化(Currying)一个过程,而不是作为一个学习练习,你应该使用 Proc#partial相反。

关于crystal-lang - Crystal 郎 curry ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351960/

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