首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Currying使用方案

Currying使用方案
EN

Stack Overflow用户
提问于 2013-10-04 08:34:21
回答 1查看 1.1K关注 0票数 0

对于我正在努力解决的一个模拟考试,我有三个函数。

一个函数,它接受一个谓词"pred“和一个集合"x”,并返回该谓词对于集合中的所有元素是否为真。

我尝试的是:

代码语言:javascript
复制
(define (all? pred x)
  (lambda (t) 
    (equal? (pred t) x)))

由于pred t返回谓词为真的x的子集,因此我尝试将其与原始集进行比较……这显然不是解决问题的方法。

一个函数,它接受一个操作" op“和一个集合"x”,并返回一个新的集合,其中,op函数基本上已经映射到整个集合。基本上等同于地图,所以你会认为我不应该在这方面寻求帮助……

我正在尝试的是:

代码语言:javascript
复制
(define (map op x)
  (lambda (t) 
    (map (op t))))

我肯定忽略了currying的一些基本方面,因为我觉得这些操作应该很简单。

EN

回答 1

Stack Overflow用户

发布于 2013-10-18 03:13:38

所以你想做一些像andmap这样的事情

您可以定义一个函数来评估列表,以查看它们的所有元素是否都是#t值。

代码语言:javascript
复制
(define full-true?
  (λ (lst)
   (if (empty? lst) #t
     (if (car lst) (full-true? (cdr lst))
         (car lst)))
))

然后,您的主要函数将是:

代码语言:javascript
复制
(define for-all?
 (lambda 
   (pred lst-of-items)
    (full-true? (map (lambda (x) (pred x)) lst-of-items))
))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19171322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档