一门编程语言,假设不能对你思考编程的方式产生影响。就不值得去学习。——  Alan Perlis

(define rember*

  (lambda (a list)

    (cond

      ((null? list) '())

      ((atom? (car list)) (cond 

                      ((eq? a (car list)) (rember* a (cdr list)))

                      (else (cons (car list) (rember* a (cdr list))))))

      (else (cons (rember* a (car list)) (rember* a (cdr list)))))))





(rember* 'cup '((coffee) cup ((tea) cup) (and (hick)) cup))



(define insertR*

  (lambda (new old l)

    (cond

      ((null? l) '())

      ((atom?

(car l)) (cond

                         ((eq?

(car l) old) (cons old (cons new (cdr l))))

                         (else (cons (car l) (insertR* new old (cdr l))))))

      (else (cons (insertR* new old (car l)) (insertR* new old (cdr l)))))))



(insertR* 'roast 'chuck '((how much (wood))

                          could

                          ((a (wood) chuck))

                          (((chuck)))

                          (if (a) ((wood chuck)))

                          could chuck wood))



(define occur*

  (lambda (a l)

    (cond

      ((null?

l) 0)

      ((atom?

(car l)) (cond ((eq? a (car l)) (+ 1 (occur* a (cdr l))))

                             (else (occur* a (cdr l)))))

      (else (+ (occur* a (car l)) (occur* a (cdr l)))))))



(occur* 'banana '((banana) (split ((((banana ice)))

                                   (cream (banana))

                                   sherbet))

                           (banana)

                           (bread)

                           (banana brandy)))

(define subst*

  (lambda (new old l)

    (cond

      ((null? l) '())

      ((atom? (car l)) (cond

                         ((eq? old (car l)) (cons new (subst* new old (cdr l))))

                         (else (cons (car l) (subst* new old (cdr l))))))

      (else (cons (subst* new old (car l)) (subst* new old (cdr l)))))))

(subst* 'orange 'banana '((banana) (split ((((banana ice)))

                                   (cream (banana))

                                   sherbet))

                           (banana)

                           (bread)

                           (banana brandy)))



(define insertL*

  (lambda (new old l)

    (cond

      ((null? l) '())

      ((atom?

(car l)) (cond

                        ((eq?

old (car l)) (cons new (cons old (insertL* new old (cdr l)))))

                        (else (cons (car l) (insertL* new old (cdr l))))

                        ))

      (else (cons (insertL* new old (car l)) (insertL* new old (cdr l)))))))



(insertL* 'pecker 'chuck '((how much (wood))

                           could

                           ((a (wood) chuck))

                           (((chunck)))

                           (if (a) ((wood chuck)))

                           (could chuck wood)))



(define member*

  (lambda (a l)

    (cond

      ((null? l) #f)

      ((atom? (car l)) (cond

                         ((eq?

(car l) a) #t)

                         (else (member* a (cdr l)))))

      (else (or (member* a (car l))

                (member* a (cdr l)))))))



(member* 'chips '((potato) (chips ((with) fish)(chips))))

最新文章

  1. S3C2440UART之FIFO
  2. Qt编程之mapx组件编程
  3. ES6 变量的解构赋值
  4. mysqli连接数据库的模板
  5. WPF 颜色转换
  6. Linux ubuntu 10.10安装OpenCv
  7. android属性
  8. Mybatis 学习
  9. springMVC工作原理图
  10. Sql解锁 数据库死锁检测
  11. BZOJ 1627: [Usaco2007 Dec]穿越泥地( BFS )
  12. perl学习(8) 控制:unless,until,next,redo,last
  13. HDU 4288 Coder (线段树)
  14. ABP .Net Core API和Angular前端APP集成部署
  15. Request和Response
  16. [Swift]LeetCode842. 将数组拆分成斐波那契序列 | Split Array into Fibonacci Sequence
  17. 我的第一个python web开发框架(25)——定制ORM(一)
  18. Ubuntu基于zsh自定义设置shell主题
  19. 从头配置,开发 cocos2dx 3.14.1
  20. Python 时间获取

热门文章

  1. 【伪暴力+智商剪枝】Codeforces Round #489 (Div. 2) D
  2. [BZOJ5427]最长上升子序列
  3. Java并发(十三):并发工具类——同步屏障CyclicBarrier
  4. csv文件导入到mysql
  5. 安装与使用adb
  6. django 获取 POST 请求值的几种方法(转)
  7. iOS开源项目大全
  8. Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
  9. 对jQuery的事件绑定的一些思考
  10. U-Boot中的filesize环境变量