使用local和ormap

时间:2013-10-16 04:19:42

标签: list scheme local racket

(define (find-name s los)
  (cond [(empty? los) false]
        [(cons? los)
         (ormap
          (local
            ((define robot s))
            ))])))

基本上,这会消耗名称和名称列表,并确定是否有任何名称 后者是平等的

有人能告诉我我做错了什么吗?我正在使用ISL。

1 个答案:

答案 0 :(得分:3)

ormap过程需要一个过程作为它的第一个参数,它负责迭代列表(不需要手动完成)。另外,我不确定你为什么首先使用local。也许你打算写这样的东西?

(define (find-name s los)
  (ormap (lambda (e)
           (or (equal? s e) (string-contains? s e)))
         los))

编辑:嗯,你可以使用local,但简单地传递lambda更为惯用。方法如下:

(define (find-name s los)
  (local [(define (f e) (or (equal? s e) (string-contains? s e)))]
    (ormap f los)))