对于我正在努力解决的一个模拟考试,我有三个函数。
一个函数,它接受一个谓词"pred“和一个集合"x”,并返回该谓词对于集合中的所有元素是否为真。
我尝试的是:
(define (all? pred x)
(lambda (t)
(equal? (pred t) x)))由于pred t返回谓词为真的x的子集,因此我尝试将其与原始集进行比较……这显然不是解决问题的方法。
一个函数,它接受一个操作" op“和一个集合"x”,并返回一个新的集合,其中,op函数基本上已经映射到整个集合。基本上等同于地图,所以你会认为我不应该在这方面寻求帮助……
我正在尝试的是:
(define (map op x)
(lambda (t)
(map (op t))))我肯定忽略了currying的一些基本方面,因为我觉得这些操作应该很简单。
发布于 2013-10-18 03:13:38
所以你想做一些像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))
))https://stackoverflow.com/questions/19171322
复制相似问题