#lang racket/base(require (only-in racket/function curry))(define (((example-func-A x) y) z) (+ x y z))(define example-func-B (curry (lambda (x y z) (+ x y z))))解决方法 是的,example-func-A(使用MIT样式的currIEd-procedure语法)不如example-func-B灵活,因为它一次只能用一个参数调用:
> (((example-func-A 4) 5) 6)15> (example-func-A 4 5 6)example-func-A: arity mismatch; the expected number of arguments does not match the given number expected: 1 given: 3 arguments...: 4 5 6 context...: /opt/homebrew-cask/Caskroom/racket/6.4/Racket v6.4/collects/racket/private/misc.rkt:87:7
相比之下,example-func-B适用于接收多个(甚至零!)参数:
> (((example-func-B 4) 5) 6)15> (example-func-B 4 5 6)15> ((((example-func-B) 4)) 5 6)15
(据推测,咖喱的灵活性会在运行时受到一点性能影响.)
总结以上是内存溢出为你收集整理的racket – 使用“MIT风格的curried-procedure表单”和传递给`curry`函数的lambda表达式有什么区别吗?全部内容,希望文章能够帮你解决racket – 使用“MIT风格的curried-procedure表单”和传递给`curry`函数的lambda表达式有什么区别吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)