如何在不使用lambda的情况下检查一个元素是否存在于列表中,这两个参数都是从函数调用中获取的?我尝试了member?但是无法得到结果。
(define (find-string (lst lst str ua)
(cond ((member? ua lst) #t)
(else #f))
(define (find-string (lst lst str ua)
(cond ((member? ua lst) #t)
(else #f))
(member 2 (list 1 2 3 4)) [1]
将返回true
另一种方法是编写自己的递归函数
(define (is-in-list list value)
(cond
[(empty? list) false]
[(= (first list) value) true]
[else (is-in-list (rest list) value)]))
首先,使用lambda
和ormap
的方法(用于测试):
; ismember? :: String List-of-Strings -> Bool
(define (ismember1? str strs) (ormap [lambda (s) (string=? s str)] strs) )
(define (ismember2? str strs)
(for/or ([s (in-list strs)])
(string=? s str) ) )
第三种方式,使用member
,不使用lambda
:
(define (ismember3? str strs) (if [member str strs] #t #f) )
注意,最后一个版本在性能方面实际上是最差的。