2009-12-08 11 views

Respuesta

6

El R5RS, y la R6RS standard library for lists definen memq, memv, y member que puede ser utilizado para ese fin.

+0

No es sólo en un SRFI, sino también en R5RS (que es implementado por todas las implementaciones decente) http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-ZH-9.html#%_idx_428 – newacct

+0

Gracias por su comentario, he corregido las referencias en la respuesta. –

0

No, no hay una lista de predicados incorporados que lo haga por usted. Sin embargo, es extremadamente fácil definir una lambda o una macro para hacer eso.

+1

sí sólo una molestia – Claudiu

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

En el Esquema PLT, uno tiene

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

de la SRFI que utilizan, respectivamente, equal?, eqv?, y eq? para la prueba de la igualdad. También hay una serie de otras funciones de la biblioteca relacionados con la búsqueda de listas:

PLT Scheme list reference

Cuestiones relacionadas