2017-05-30 34 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])) 
相關問題