我正在努力练习考试的三个功能。
一个函数,它接受谓词“pred”和一个“x”集合,并返回该集合中所有元素的谓词是否为真。
我在尝试什么:
(define (all? pred x)
(lambda (t)
(equal? (pred t) x)))
由于pred t返回谓词为true的x子集,我试图将它与原始集合进行比较......显然不是这样做的。
一个函数,它接受一个操作“op”和一个“x”,并返回一个新的集合,其中op函数基本上已映射到整个集合。基本上相当于地图,所以你认为我不应该在这方面寻求帮助......
我在尝试什么:
(define (map op x)
(lambda (t)
(map (op t))))
我一定错过了currying的一些基本方面,因为我觉得这些操作应该很简单..
答案 0 :(得分:1)
所以你试图做andmap
之类的事情您可以定义一个评估列表的函数,以查看其所有元素都是#t值。
(define full-true?
(λ (lst)
(if (empty? lst) #t
(if (car lst) (full-true? (cdr lst))
(car lst)))
))
然后,您的主要功能是:
(define for-all?
(lambda
(pred lst-of-items)
(full-true? (map (lambda (x) (pred x)) lst-of-items))
))