一门编程语言,假设不能对你思考编程的方式产生影响。就不值得去学习。——  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))))

全民Scheme(2):来自星星的你的更多相关文章

  1. 全民Scheme(0):lat的定义

    接下来我会写一写Scheme的学习笔记.嗯,Scheme是属于小众的语言,但合适用来教学的. 什么是lat,就是遍历list里的每一个S-expression,假设发现当中某个不是atom的,则返回f ...

  2. 全民Scheme(1):数字游戏

    刚刚看到两句话,感觉不错,分享给大家: 1.用户的问题.就是我们的问题 2.做一些用户想要的东西 (define add1 (lambda (x) (+ 1 x))) (define sub1 (la ...

  3. Partition:Partiton Scheme是否指定Next Used?

    在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...

  4. Android业务组件化之URL Scheme使用

    前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在 ...

  5. iOS - URL Scheme 操作

    推荐JLRoutes路由跳转 NSScanner 在寻找更加灵活的页面跳转和通知,我遇见了JLRoutes,从而学习使用URL Scheme来定义界面入口.以前从来没有使用过,不过很多大厂和流行的框架 ...

  6. 自定义 URL Scheme 完全指南

    本文由 Migrant 翻译自 The Complete Tutorial on iOS/iPhone Custom URL Schemes,转载请注明出处. 注意: 自从自定义 URL 的引入,本文 ...

  7. JS魔法堂:Data URI Scheme介绍

    一.前言 上周五公司内部的Any Topic Conf.上我和同事们分享了这个主题,有同事说这个有用,有同事说这个没啥用,后来还延伸到网站性能的话题上,大家讨论的激烈程度让我觉得这次选题还不错.本篇先 ...

  8. CSS魔法堂:小结一下Box Model与Positioning Scheme

    前言  对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考.  <CSS魔法堂:重新认识Box Model.IFC.B ...

  9. Project、Target、Workspace and Scheme

    前言 今天有人问我Target和Project是什么关系?额...学习iOS开发都知道Target和Project的关系.这里我就简单的做了一个总结,而且加入的Scheme和Workspace.如果不 ...

随机推荐

  1. Docker入门到实战

    1.系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存 ...

  2. [CF1043G]Speckled Band

    题意:给定字符串$s_{1\cdots n}$,多次询问它的一个子串$s_{l\cdots r}$能否被切割成多个部分,使得至少有一个部分出现两次,且切出来的本质不同字符串数最少 做一道题学了两个算法 ...

  3. Problem F: 深入浅出学算法007-统计求和

    Description 求含有数字a且不能被a整除的4位整数的个数,并求这些整数的和 Input 多组测试数据,先输入整数T表示组数然后每组输入1个整数a(1<=a<=9) Output ...

  4. bzoj 1045

    确定初始状态(n与1直接谁给了谁几个),后面的就确定了,再根据总结出来的东西决定前面谁给谁几个最优. n=1000000!!! /*********************************** ...

  5. bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  6. JSONObject 和 JSONArray 的区别和用法

    JSONObject 和 JSONArray 的数据表现形式不同: JSONObject的数据是用 {  } 来表示的,例如: { "id" : "1", &q ...

  7. BZOJ 1040 ZJOI 2008 骑士 树形DP

    题意: 有一些战士,他们有战斗力和讨厌的人,选择一些战士,使他们互不讨厌,且战斗力最大,范围1e6 分析: 把战士看作点,讨厌的关系看作一条边,连出来的是一个基环树森林. 对于一棵基环树,我们找出环, ...

  8. [转]关于Java对中文排序的问题

          1 2 3 4 5 6 Comparator chinese_cmp = Collator.getInstance(Locale.CHINA);   String[] strs = new ...

  9. Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数

    D. Soldier and Number Game Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/conte ...

  10. MSChart使用小结

        在用到图表展示某项.多项信息的统计情况,很正常联想到MSChart控件.        以VS2008开发为例,在工具箱也中右击,选择”choose items“,打开对话框,选择COM组件T ...