这是我的咖喱功能:

(define (curry g)
  (lambda(x)
    (lambda(y)
      (g x y))))


我正在尝试使用curry函数生成不等于1的数字列表。

到目前为止,我有:

(define filter-numbers ((curry filter)
                       ((curry equal?) 1)))


但它只会产生等于1的数字列表。

例如(过滤器编号(列表1 2 3))->(列表1)

我想得到(清单2 3),但不知道如何。有人可以帮忙吗?

最佳答案

尝试一下-使用内置的curryfilter-not过程,这是Racket中正确的方法:

(define filter-numbers
  (curry filter-not (curry equal? 1)))


或者,使用您的curry实现:

(define filter-numbers
  ((curry filter-not)
   ((curry equal?) 1)))


无论哪种方式,它都能按预期工作:

(filter-numbers '(1 2 3 4 5 1 7 1))
=> '(2 3 4 5 7)

关于scheme - 通过数字列表过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33869174/

10-16 00:06