Racket中咖喱功能的占位符参数?

时间:2017-11-02 21:57:32

标签: syntax racket currying

我正在尝试做这样的事情,同时坚持使用核心标准库。

(define (fn m x b) (+ b (* m x)))

((curry fn _ 3 _ ) 2 4) -> (fn 2 3 4)

是否有类似这样的内容,或者Racket社区是否规定了不同的习语,例如命名参数?

1 个答案:

答案 0 :(得分:3)

这是一个标准解决方案,但不在核心库中。只需使用SRFI 26中的cut宏:

(require srfi/26)

(define (fn m x b)
  (+ b (* m x)))

((cut fn <> 3 <>) 2 4)
=> 10
(fn 2 3 4)
=> 10