scheme 学习笔记(0)
来源:互联网 发布:淘宝特卖报名入口 编辑:程序博客网 时间:2024/05/20 06:25
早有打算学习一下scheme, 这个传说中的语言, 可是由于各方面的原因, 一直迁延 .近来心情颇为烦躁, 学习一下scheme , 转移一下注意力.
第一篇, 做一个概述, 记录一些听来的和自己感受到的. 以后在逐步细化, 将来做总结的时候, 看看有什么体会.
首先, scheme, 的历史.
前身是lisp, 是一个古老, 应用的非常广泛的语言. 函数是语言, 其核心就是lambda. 号称是一个自己实现自己的编译器的语言. 有相当数量的老程序员和高手的拥戴. 自己实现自己的编译器, 神乎其神吧. 如果你想了解一下原因, 来打发一下自己的好奇心. 好, 我可以回答你, 我不知道. 不过, 若是你想知道结果, 可以和我一起走完scheme之旅.
函数语言. 所谓函数语言, 据老外们的描述, 是区别于过程语言. c之类的, 我们平时虽然也叫做函数, 被老外们划分在procedure 语言里面. 是一种命令式的语言. c是弱类型的, c++/java/c#. 之流一直发展下来, 都是强类型的静态编译语言. python之类的, 是无类型的动态语言. 不过, 随着语言的发展, 各个元素有融合的趋势. 这个, 非常不幸. 当一个东西包含了所有的东西的时候, 我们通常可以看到, 这个东西已经走向末路了.
特别强调. lisp是不同于以上任何一种计算机语言的东西. 有许许多多的实现版本. 相当龙蛇混杂, 随着岁月的变迁. 自然有一些智力人士, 对他做一些改造. 可能一开始以异端存在, 一时间难以获得主流的认可, 只好自立门户. scheme就是其中之一. 还有一个可能比较了解人多一些的, 就是 EMacs lisp. 强大的emacs 的内嵌脚本语言.
在这里, 再喷一下emacs.说实话, emacs是一个令人敬畏的东西, 强大, 怪异, 热键, 以及难用, 难学. 建议用vi, 一旦拥有, 别无所求. 当然, 直接用ue的同学也是要称赞的, vi绝对是一个好的选择. 尤其在对代码做一些替换, 格式化的时候, 比如下面要贴的代码, 就是用vi生成的html代码...
有没有见过或者不太熟悉的同学, 我贴一段下来, 大家来向这个长相怪异, 内心善良, 能力强大的朋友致敬.
1 (define elaboration-exn-handler
2 (lambda (exn)
3 (compiler:fatal-error
4 #f
5 (format "Error during elaboration: ~a"
6 (if (exn? exn)
7 (exn-message exn)
8 exn)))
9 (raise exn))
这是一段完整的lambda定义, 相当于是一个函数的定义, 呵呵. 看着是不是有一种变态的感觉. 这还算好的, 诸位兄弟, 是我从核心代码里面摘取出来一段标注代码. 如果代码格式比较差的, 没有经验的人写出来, 比如我亲自写的那几段. 您肯定一眼就吐血了.
scheme 也有几种不同的实现, 有MIT的实现和PLT两个, 比较强大. 其中又以PLT的那个比较适合学习和使用. 当然, 我也十分相信MIT的那个, 可能以后稍微看一下.
scott meyers 先生建议大家开发c++的时候, 用两个编译器来编译自己的代码. 我在这里也借用一下, 用两个scheme实现来检验您的代码, 这样, 可以确保不会把你绑死在编译器或者IDE环境里, 从而对比两者的异同, 更加深刻了解系统本质.
首先来一句纲领:
scheme的所有内容, 就是list, every thing.... . list的第一个元素是一个操作符, 剩下的是参数.
剩下的欲知详情, 请看下回. 我希望我不要太忙, 有时间逐步把这个东西给大家介绍完.
当然, 详情如何, 我现在也不是很清楚. 我也要去看一下才知道啊....
以上为一家之言, 或有误解, 错误, 全因本人也没有学习完整之故. 欢迎指出, 更加欢迎纠正. 让我有所进步 , 多谢了.
我建了一个scheme新闻组, 大家愿意的话, 可以交流发邮件给我. 我一般会写在blog里面.
http://groups.google.com/group/scheme_cn
第一篇, 做一个概述, 记录一些听来的和自己感受到的. 以后在逐步细化, 将来做总结的时候, 看看有什么体会.
首先, scheme, 的历史.
前身是lisp, 是一个古老, 应用的非常广泛的语言. 函数是语言, 其核心就是lambda. 号称是一个自己实现自己的编译器的语言. 有相当数量的老程序员和高手的拥戴. 自己实现自己的编译器, 神乎其神吧. 如果你想了解一下原因, 来打发一下自己的好奇心. 好, 我可以回答你, 我不知道. 不过, 若是你想知道结果, 可以和我一起走完scheme之旅.
函数语言. 所谓函数语言, 据老外们的描述, 是区别于过程语言. c之类的, 我们平时虽然也叫做函数, 被老外们划分在procedure 语言里面. 是一种命令式的语言. c是弱类型的, c++/java/c#. 之流一直发展下来, 都是强类型的静态编译语言. python之类的, 是无类型的动态语言. 不过, 随着语言的发展, 各个元素有融合的趋势. 这个, 非常不幸. 当一个东西包含了所有的东西的时候, 我们通常可以看到, 这个东西已经走向末路了.
特别强调. lisp是不同于以上任何一种计算机语言的东西. 有许许多多的实现版本. 相当龙蛇混杂, 随着岁月的变迁. 自然有一些智力人士, 对他做一些改造. 可能一开始以异端存在, 一时间难以获得主流的认可, 只好自立门户. scheme就是其中之一. 还有一个可能比较了解人多一些的, 就是 EMacs lisp. 强大的emacs 的内嵌脚本语言.
在这里, 再喷一下emacs.说实话, emacs是一个令人敬畏的东西, 强大, 怪异, 热键, 以及难用, 难学. 建议用vi, 一旦拥有, 别无所求. 当然, 直接用ue的同学也是要称赞的, vi绝对是一个好的选择. 尤其在对代码做一些替换, 格式化的时候, 比如下面要贴的代码, 就是用vi生成的html代码...
有没有见过或者不太熟悉的同学, 我贴一段下来, 大家来向这个长相怪异, 内心善良, 能力强大的朋友致敬.
1 (define elaboration-exn-handler
2 (lambda (exn)
3 (compiler:fatal-error
4 #f
5 (format "Error during elaboration: ~a"
6 (if (exn? exn)
7 (exn-message exn)
8 exn)))
9 (raise exn))
这是一段完整的lambda定义, 相当于是一个函数的定义, 呵呵. 看着是不是有一种变态的感觉. 这还算好的, 诸位兄弟, 是我从核心代码里面摘取出来一段标注代码. 如果代码格式比较差的, 没有经验的人写出来, 比如我亲自写的那几段. 您肯定一眼就吐血了.
scheme 也有几种不同的实现, 有MIT的实现和PLT两个, 比较强大. 其中又以PLT的那个比较适合学习和使用. 当然, 我也十分相信MIT的那个, 可能以后稍微看一下.
scott meyers 先生建议大家开发c++的时候, 用两个编译器来编译自己的代码. 我在这里也借用一下, 用两个scheme实现来检验您的代码, 这样, 可以确保不会把你绑死在编译器或者IDE环境里, 从而对比两者的异同, 更加深刻了解系统本质.
首先来一句纲领:
scheme的所有内容, 就是list, every thing.... . list的第一个元素是一个操作符, 剩下的是参数.
剩下的欲知详情, 请看下回. 我希望我不要太忙, 有时间逐步把这个东西给大家介绍完.
当然, 详情如何, 我现在也不是很清楚. 我也要去看一下才知道啊....
以上为一家之言, 或有误解, 错误, 全因本人也没有学习完整之故. 欢迎指出, 更加欢迎纠正. 让我有所进步 , 多谢了.
我建了一个scheme新闻组, 大家愿意的话, 可以交流发邮件给我. 我一般会写在blog里面.
http://groups.google.com/group/scheme_cn
- scheme 学习笔记(0)
- lisp-Scheme学习笔记
- scheme学习笔记1
- 学习scheme的笔记
- Scheme学习笔记——1
- Scheme学习笔记——2
- 学习Scheme
- Scheme学习
- scheme 学习
- 【iOS学习笔记】自定义 URL Scheme 完全指南
- CEGUI的Scheme笔记
- Scheme R5RS解读笔记
- Scheme的学习感悟
- scheme学习题目
- Scheme学习汇总
- Scheme进阶学习
- Android URL Scheme 学习
- 【iOS学习笔记】通过自定义的URL Scheme启动你的App
- 写在2007年末
- 充分利用异步回调(JavaScript 应用程序中实现数据源协调)
- 物理层
- ref,out,params关键字的区别
- http状态码一览表
- scheme 学习笔记(0)
- 用OpenInventor实现的NeHe OpenGL教程-第十三课
- Emacs Server的设置方法
- javascript 页面跳转
- [zz] scheme
- D-Link624+A路由调戏电信的办法
- RUP(Rational Unified Process,统一软件开发过程,统一软件过程)
- csc.exe的环境变量设置
- 软件开发人员应有的心态