首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liitle计划器第4 page81记忆器*功能

Liitle计划器第4 page81记忆器*功能
EN

Stack Overflow用户
提问于 2016-04-12 09:41:08
回答 1查看 115关注 0票数 0

我在研究Liitle的阴谋四。

有时候我有不同的解决方案。这让我很困惑,我很难理解这本书的标准答案。

例如,使用rember*

我的解决办法是:

代码语言:javascript
复制
   (define rember*
     (lambda (a l)
       (cond
        ((null? l) '())
        ((atom? l) l)
        ((eq? a (car l)) (rember* a (cdr l)))
        (else (cons (rember* a (car l)) (rember* a (cdr l)))))))

这本书的解决方案:

代码语言:javascript
复制
(define rember*
  (lambda (a l)
    (cond
      ((null? l) '())
      ((atom? (car l))
       (cond
         ((eq? (car l) a)
          (rember* a (cdr l)))
         (else (cons (car l)
                 (rember* a (car l))))))
      (else (cons (rember* a (car l))
               (rember* a (cdr l)))))))

哪种更好些呢?

还有一个问题。

原结构:

代码语言:javascript
复制
(define rember*
  (lambda (a l)
    (cond
      ((null? l) '())
      ((atom? (car l))
       (cond
         ((eq? (car l) a)
          (rember* a (cdr l)))
         (else (cons (car l)
                 (rember* a (car l))))))
      (else (cons (rember* a (car l))
               (rember* a (cdr l)))))))

新结构:

代码语言:javascript
复制
(define rember*
  (lambda (a l)
    (cond
     ((null? l) '())
     ((atom? (car l)) (cond
                       ((eq? (car l) a) (rember* a (cdr l)))
                       (else (cons (car l) (rember* a (cdr l))))))
     (else (cons (rember* a (car l)) (rember* a (cdr l)))))))

谁对每个人都更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-12 10:30:25

一般情况下,相同的功能由不同的程序实现并不少见。但是,在您的示例中,这两个程序实现了不同的功能,因此我认为不能立即说“哪个是最好的”。

第二个程序(书中的程序)实现了一个定义在列表域上的函数,并且只实现了该域。因此,你不能给它一个原子,例如,因为它会产生一个错误。

另一方面,第一个版本(您的版本)可以应用于列表(在本例中具有与第二个列表相同的行为),但也可以应用于原子,例如:

代码语言:javascript
复制
(rember* 'a 'a)  ; returns a
(rember* 'a 'b)  ; returns b

因此,我们应该查看函数的规范,看看程序是否以一致的方式实现这个规范。我要说的是,第一个程序并不完全符合函数的规范(从第二个参数中删除一个元素),但这只是一种意见,因为函数只在列表的域上得到了很好的定义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36569415

复制
相关文章

相似问题

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