2009-06-27 4 views
3

다음 입력을 어떻게 받아들입니까?스키마의 패턴 매칭

(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 

편집과 같은

(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) 

뭔가 :이 숙제지지 않습니다. 저는 PAIP에서 ELIZA와 같은 것을 쓰려고했지만 한 단어로 시작하는 패턴을 쓰는 법만 알고 있습니다.

답변

3

문자를 언급했지만 예제에서는 숫자를 사용하십시오. 여기서 숫자를 사용하고 있지만 문자로 전환하는 것은 쉽지 않습니다.

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