Racket 使用“;麻省理工学院风格的咖喱程序表”;以及传递给'curry'函数的lambda表达式?

Racket 使用“;麻省理工学院风格的咖喱程序表”;以及传递给'curry'函数的lambda表达式?,racket,Racket,给定下面的代码片段,在example-func-A和example-func-B之间是否有任何有意义的区别 #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

给定下面的代码片段,在
example-func-A
example-func-B
之间是否有任何有意义的区别

#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过程语法)不如
example-func-B
灵活,因为它一次只能用一个参数调用:

相反,
example-func-B
允许接收多个(甚至零!)参数:

> (((example-func-B 4) 5) 6)
15
> (example-func-B 4 5 6)
15
> ((((example-func-B) 4)) 5 6)
15
(大概是
curry
的灵活性在运行时带来了一些性能上的影响。)

> (((example-func-B 4) 5) 6)
15
> (example-func-B 4 5 6)
15
> ((((example-func-B) 4)) 5 6)
15