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