1.在scheme中,为了效率,对序对的操作 cons car 和cdr是内部实现的,这里是scheme实现, 其中cons用到了闭包

 (define (cons a b)
(define (dispatch m)
(cond ((= m 1) a)
((= m 2) b)
(else (error "index out of range")))
)
dispatch
) (define (car d) (d 1))
(define (cdr d) (d 2))

2.计算列表长度和叶子节点数目

 (define (count_leaf x)
(cond ((null? x) 0)
((not(pair? x)) 1)
(else (+
(count_leaf (car x))
(count_leaf (cdr x))
))
)
) (define (length items)
(define (length_iter count x)
(if (null? x)
count
(length_iter (+ 1 count) (cdr x))
)
) (length_iter 0 items)
)

3.Honor规则计算多项式(SICP P80 2.34)

(define (accumulate op inital seq)
(if (null? seq)
inital
(op (car seq) (accumulate op inital (cdr seq)))
)
) (define (honor_eval x coeff_seq)
(accumulate
(lambda (this_coeff highter_terms)
(
+ this_coeff
(* x highter_terms)
)
)
0
coeff_seq
)
)

[lisp] scheme学习2的更多相关文章

  1. LISP语言学习资源

    LISP的介绍:Paul Graham 的主页 http://paulgraham.com/index.html Lisp之根源 - 保罗·格雷厄姆 http://daiyuwen.freeshell ...

  2. Lisp语言学习的书

    Scheme <How to Design Programs : An Introduction to Programming and Computing>(<程序设计方法>) ...

  3. [lisp] scheme环境搭建与编译运行

    搭建环境参考这篇 http://leochin.com/mac-scheme-install/ 用文本编辑器写代码 保存文件格式为 .scm 在终端中cd到scm文件所在文件夹, 执行  (cf &q ...

  4. Lisp学习--Windows下面的开发环境搭建

    很久以前,就准备学习Lisp,但是遇到不少困难,社区太凌乱,也一直很犹豫,直到看了<Common Lisp - 想说爱你不容易>,想看看Common Lisp怎么样,之前都是拿Lisp的方 ...

  5. 开始学习Scheme

    开始学习Scheme   函数式编程(Functional Programming)是在MIT研究人工智能(Artificial Intelligence)时发明的,其编程语言为Lisp.确切地说,L ...

  6. Erlang之父的学习历史及学习建议

    当我开始学习编程的时候(1967年),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN. 在我最早学习编程的时候,我的编程周期 ...

  7. The Lisp Curse /Lisp魔咒

    The Lisp Curse /Lisp魔咒 http://winestockwebdesign.com/Essays/Lisp_Curse.html 英文出处 http://www.soimort. ...

  8. 谈lisp

    The Lisp Curse /Lisp魔咒 http://winestockwebdesign.com/Essays/Lisp_Curse.html 英文出处 http://www.soimort. ...

  9. scheme 之门

    scheme 之门 开始之前 这是一篇 Scheme 的介绍文章. Scheme 是一个 LISP 的方言, 相对于 Common LISP 或其他方言, 它更强调理论的完整和优美, 而不那么强调实用 ...

随机推荐

  1. linux命令总结vmstat命令

    一.简介 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/ ...

  2. python爬虫 scrapy3_ 安装指南

      安装指南 安装Scrapy 注解 请先阅读 平台安装指南. 下列的安装步骤假定您已经安装好下列程序: Python 2.7 Python Package: pip and setuptools. ...

  3. spark RDD 常见操作

    fold 操作 区别 与 co 1.mapValus 2.flatMapValues 3.comineByKey 4.foldByKey 5.reduceByKey 6.groupByKey 7.so ...

  4. Git 操作指南

    http://blog.csdn.net/troy__/article/details/40082657

  5. sequelize初使用

    官网地址:Sequelize Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects Post ...

  6. 视觉中的经典图像特征小结(一): 颜色直方图, HOG, LBP

    [普兒原创, 如有错误和纰漏欢迎指正. 更新中...] 1. 颜色直方图 颜色空间在本质上是定义在某种坐标系统下的子空间,空间中的每一个坐标表示一种不同的颜色.颜色空间的目的在于给出某种颜色标准,使得 ...

  7. WEB开发常用软件集合

    软件 dreamweaver cs6 http://www.cr173.com/soft/74348.html navicat http://pan.baidu.com/s/1b9nNzw subli ...

  8. 【Python】Flask系列-cookie和session笔记

    cookie: 1.cookie出现的原因:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  9. php中数据库连接方式pdo和mysqli对比分析

    1)总的比较   PDO MySQLi 数据库支持 12种不同的数据库支持 支持MySQL API OOP OOP + 过程 Connection Easy Easy 命名参数 支持 不支持 对象映射 ...

  10. zabbix3.0.4安装趋势图集中显示插件graphtrees

    通过yum方式安装的zabbix 1.将/usr/share/zabbix目录修改权限,因此处我们使用的是apache,所以用户改为apache,如果是nginx需要改为nginx(是否需要修改可以参 ...