2009-12-08 2 views

Antwort

6

Die R5RS und die R6RS standard library for lists definieren memq, memv und member die zu diesem Zweck verwendet werden können.

+0

Es ist nicht nur in einem SRFI, sondern auch in R5RS (die von allen anständigen Implementierungen implementiert ist) http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-ZH-9.html#%_idx_428 – newacct

+0

Danke für Ihren Kommentar, ich habe die Referenzen in der Antwort korrigiert. –

0

Nein, es gibt keine integrierte Prädikatliste, die das für Sie tun wird. Es ist jedoch sehr einfach, ein Lambda oder ein Makro zu definieren, um genau das zu tun.

+1

ja nur ärgerlich – Claudiu

4
(define (contains? l i) 
    (if (empty? l) #f 
     (or (eq? (first l) i) (contains? (rest l) i)))) 
6

In PLT Scheme hat man

(member whatever list) 
(memv whatever list) 
(memq whatever list) 

vom SRFI der Verwendung bzw. equal?, eqv? und eq? auf Gleichheit zu testen. Darüber hinaus gibt es eine Reihe von anderen Bibliotheksfunktionen in Bezug auf das Durchsuchen von Listen:

PLT Scheme list reference