2009-12-08 8 views

Répondre

6

Le R5RS et le R6RS standard library for lists définissent memq, memv et member qui peut être utilisé à cette fin.

+0

Il est non seulement dans un SRFI, mais aussi dans r5rs (qui est mis en œuvre par toutes les implémentations décentes) http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-ZH-9.html#%_idx_428 – newacct

+0

Merci pour votre commentaire, j'ai corrigé les références dans la réponse. –

0

Non, il n'y a pas de liste prédéfinie intégrée qui le fera pour vous. Il est extrêmement facile de définir un lambda ou une macro pour le faire.

+1

ouais tout simplement ennuyeux – Claudiu

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

Dans le schéma de PLT, on a

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

du SRFI qui utilisent respectivement equal?, eqv? et eq? pour tester l'égalité. Il y a aussi un certain nombre d'autres fonctions de bibliothèque liées à la recherche dans les listes:

PLT Scheme list reference

Questions connexes