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

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

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

4

1 回答 1

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)))
于 2013-10-16T05:05:39.820 回答