2009-06-27 8 views
3

Comment accepter l'entrée suivante?Motif correspondant dans le schéma

(list of 0 or more charcters and ends with 3) or 
(list of 1 or more characters 4 and 0 or more characters after 4) 

quelque chose comme

(match (list 3)) -> #t 
(match (list 1 2 3)) -> #t 
(match (list 1 2 3 4)) -> #t 
(match (list 1 2 3 4 5)) -> #t 
(match (list 4)) -> #f 

EDIT: C'EST PAS MON DEVOIRS. J'essaie d'écrire quelque chose comme ELIZA de PAIP mais je sais seulement comment écrire un motif qui commence par un mot.

Répondre

3

Vous mentionnez des caractères, mais utilisez ensuite des nombres dans votre exemple. J'utilise des nombres ici, mais passer aux caractères est trivial.

(require scheme/match) 
(define satisfies 
    (match-lambda 
    [(list (? number?) ... 3) #t] 
    [(list (? number?) ..1 4 (? number?) ...) #t] 
    [_ #f])) 
Questions connexes