2017-05-30 98 views
1

我一直试图在“简单方案”中理解这个练习8.10,但在球拍博士中却无法把握它。谓词为真为所有?

这是一个:写一个谓词真正为所有?这需要两个参数,一个谓词过程和一个句子。如果谓词参数对句子中的每个单词都返回true,它应该返回#t。

(真换所有?甚至? '(2 4 6 8))

Ť

(真换所有?甚至?'(2 6 3 4))

˚F

我试图解决方案:

(定义(真参加的所有PRED发送) (=(count sent)(count(keep pred sent))))

但是Racket博士给出的错误如count:arity mismatch。 是否有人能够重写它,或者至少提供一些提示。感谢很多:)

最好的问候, 尤尼斯

回答

0

球拍支持多国语言。因此,所有程序都以#lang行开始,告知Racket使用哪种语言。计划于简单的方案中使用的话需要这一行:

#lang planet dyoo/simply-scheme:2 

下面的程序:

#lang planet dyoo/simply-scheme:2 

(define (true-for-all? pred sent) 
    (= (count sent) (count (keep pred sent)))) 

(true-for-all? even? '(2 4 6 8)) 

(true-for-all? even? '(2 6 3 4)) 

回报

#t 
#f 

预期。

注意:在DrRacket的左下角选择“确定源语言”。

的简单方案语言的文档是在这里:http://planet.racket-lang.org/package-source/dyoo/simply-scheme.plt/2/2/planet-docs/manual/index.html

+0

那真是翔实,非常感谢你@soegaard。 但是,在不改变方案的方言的情况下,还可以提出解决方案吗? –

+0

@euniceyoon如果您发现答案已完成,请不要忘记接受它(点击绿色复选标记)。 – soegaard

0

有纯球拍(仅适用于上下文)的解决方案:

#lang racket 
(define (true-for-all? pred list) 
    (cond 
    [(empty? list) #t] 
    [(pred (first list)) (true-for-all? pred (rest list))] 
    [else #f]))