2014-01-29 79 views
0

我试图修改我在SOF上发现的元音代码,在下面发表,我试图把它变成一个单词列表,以便我可以检查单词是否在列表中。不过,我不断收到错误:查找列表中的字符串

;; A list of words 
(define words-list (cons #\dog (cons #\pig) 
;; split-string : string -> (listof string-pieces) 
;; converts a string into a list of string pieces. 
(define (split-string a-string) 
    (string->list a-string)) 
;; has-word? : string-piece -> boolealn 
;; checks whether a string-piece is a vowel 
(define (has-word? string-piece words) 
    (cond ((empty? words) false) 
    ((equal? string-piece (first words)) true) 
    (else (has-word? string-piece (rest words))))) 
;; Test 
(check-expect (has-word? #\i word-list) true) 
(check-expect (has-word? #\x word-list) false) 
;; contains-words-list : (listof string-pieces) -> boolean 
;; determines whether any items on a list of string-pieces 
;; contains a piece that represents a word, from a list of words. 
(define (contains-words-list losp) 
    (cond ((empty? losp) false) 
     ((false? (has-word? (first losp) words-list)) 
     (contains-words-list (rest losp))) 
     (else (has-word? (first losp) words-list)))) 
;; Test 
(check-expect (contains-word-list (cons #\h (cons #\i empty))) true) 
(check-expect (contains-word-list (cons #\h (cons #\h empty))) false) 
;; contains-word? : string -> boolean 
;; checks whether a string contains a vowel. 
(define (contains-word? a-string) 
    (contains-word-list (split-string a-string))) 
;; Test 
(check-expect (contains-word? "pig") true) 

我不断收到类似的错误缺点的狗和猪是太大了,它不会产生正确的输出,任何指导将是巨大的

回答

0
;; A list of words 
    (define words-list (cons "dog" (cons "pig" '()))) 
    ;; split-string : string -> (listof string-pieces) 
    ;; converts a string into a list of string pieces. 
    (define (split-string a-string) 
     (string->list a-string)) 
    ;; has-word? : string-piece -> boolealn 
    ;; checks whether a string-piece is a vowel 
    (define (has-word? string-piece words) 
     (cond ((null? words) #f) 
     ((equal? string-piece (car words)) #t) 
     (else (has-word? string-piece (cdr words))))) 

    ;; contains-words-list : (listof string-pieces) -> boolean 
    ;; determines whether any items on a list of string-pieces 
    ;; contains a piece that represents a word, from a list of words. 
    (define (contains-words-list losp) 
     (cond ((null? losp) #f) 
      ((false? (has-word? (car losp) words-list)) 
      (contains-words-list (cdr losp))) 
      (else (has-word? (car losp) words-list)))) 

    ;; contains-word? : string -> boolean 
    ;; checks whether a string contains a vowel. 
    (define (contains-word? a-string) 
     (contains-word-list (split-string a-string))) 
0

你用于创建字符串列表的语法是错误的:

> (cons #\dog (cons #\pig)) 
Unhandled exception 
Condition components: 
    1. &lexical 
    2. &message: "invalid syntax" 
    3. &irritants: (#\d #\o) 
    4. &source-position: 
     file-name: *stdin* 
     character: 10 

并且您缺少parens。尝试

(list "dog" "pig") 

为您的word-list。出于类似的原因,您的check-expect表单也是错误的。

相关问题