我试图修改我在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 :(得分: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)))
答案 1 :(得分: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
表单也是错误的。