【问题标题】:Placeholder arguments for curry function in Racket?Racket中咖喱函数的占位符参数?
【发布时间】:2017-11-02 21:57:32
【问题描述】:

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

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

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

有没有类似的东西,或者 Racket 社区是否规定了不同的习语,例如命名参数?

【问题讨论】:

    标签: syntax racket currying


    【解决方案1】:

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

    (require srfi/26)
    
    (define (fn m x b)
      (+ b (* m x)))
    
    ((cut fn <> 3 <>) 2 4)
    => 10
    (fn 2 3 4)
    => 10
    

    【讨论】:

    • 有人可能会说 SRFI 库核心库的一部分 - 毕竟它们非常标准,并且在大多数解释器中都可用。
    • 它是包含库的一部分,不太可能会改变,但规范来自 Scheme SRFI,所以这是 lang #racket 遵循标准的部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多