LISP与SICP
zzulp
这个作者很懒,什么都没留下…
展开
-
关于scheme的一些资料
Scheme 是Lisp的一种方言,它是种不纯粹(impure)的函数式编程语言(Functional Programming),诞生于MIT人工智能实验室。不同于Lisp的是,它可以被编译成机器码运行。在国外的一些高校中,Scheme是第一个学习的编程语言。它有如下特点:词法定界(Lexical Scoping)动态类型(Dynamic Typing)良好的可扩展性尾递归(T转载 2009-04-02 20:30:00 · 1420 阅读 · 0 评论 -
Emacs使用概览
光标控制c+v/alt+v 上下移动一页C+n/p 上下移动行c+f/b 前后移动一字符alt+f/b 前后移动一单词c+a/e 移动到行首和尾alt+a/e 移动到句首和尾c+u digit cmd 连续执行c+g 取消键入命令文本编辑可以直接编辑文本如果需要重复键入:可以使用c+u char删除 c+d / c+k恢复c+x u评估表达式值c+原创 2010-07-13 23:33:00 · 1450 阅读 · 0 评论 -
Common Lisp学习之十一:使用宏
1 CL中常见的宏1.1 条件宏when (defmacro when (cond &rest) `(if ,cond (progn ,@rest)))unless (defmacro unless (cond &rest) `(if (not ,cond) (progn ,@rest)))cond 1.2 逻辑宏and ornot1.3 循环宏C原创 2013-12-29 22:57:41 · 2155 阅读 · 0 评论 -
Common Lisp学习之十:输出格式化控制与高级循环控制
1 format1.1 Format函数其通用调用方式为:(format stream control-string format-args)第一个参数用于输出目的地,它可以是T NIL 一个流或一个带有填充指针的字符串。T是stdout的简称;NIL将使format返回一个字符串。其他情况均返回NIL。第二个参数为控制字符串,用来指示如何进行显示,包含众多的格式化指令。第二节将重原创 2013-12-29 22:56:25 · 3619 阅读 · 0 评论 -
Common Lisp学习之八:异常状况处理
Lisp的condition系统是其最伟大的特性之一。状况比异常更具一般性,状况可以代表程序执行过程中的任何事件。状况比异常更灵活,其将责任分为三部分:产生状况、处理以及再启动。在多数语言中,错误处理方式为从一个失败的函数退出并返回给调用者,调用者根据情况采取后续的步骤:让自己也失败,或者忽略之,进一步地,尝试修复此错误。一些语言采用返回值的方式,另一些采用了异常抛出的方式。这两种方式原创 2013-12-29 22:48:36 · 3253 阅读 · 0 评论 -
Common Lisp学习之九:使用包
1 读取器如何处理包每个包都有名字,(find-package name)可以通过包名来找到一个包。解释器当前使用包存储于全局变量*package*中。包的字面形式为#。(package-name pkg)可以返回一个包的名称。包可看作一个字符串和符号的映射表,读取器使用(find-symbol name)和intern通过名字来查找特定包中的某个符号。二者的区分是后者会在符号原创 2013-12-29 22:49:40 · 3613 阅读 · 0 评论 -
Common Lisp学习之七:LISP的面向对象编程
1 面向对象和Common Lisp 面向对象的基本思想在于数据和操作的绑定-即封装,而更重要的是多态。CL和多数OO语言一样是基于类的,类通过层次结构组织在一起,形成了对象的分类系统。 在CL中,所有类的基类是单根T,但它其同时支持多重继承。然而CL的面向对象是基于广义函数来实现的。广义函数类似于抽象函数,只定义接口(名字和参数列表),不提供实现。实现由方法提供,每个方法提供广义函数原创 2013-12-29 22:43:47 · 5139 阅读 · 1 评论 -
Common Lisp学习之六:文件IO操作与路径名抽象
1 打开文件CL也提供了流的抽象,读取文件的一般方式也是open一个文件,然后在返回的流上,调用read-*函数。(open "path" &key direction element-type if-not-exist) 根据路径打开一个文件,返回一个流direction支持选项:input :output :ioif-exist可以控制文件存在时的操作,支持:er原创 2013-12-29 22:38:34 · 4455 阅读 · 0 评论 -
Common Lisp学习之五:集合数据结构
1 向量向量是基于数字索引的集合,分为变长和定长两种。(vector values) 用来创建并初始化一个定长的向量。(make-array dim &key initial-element fill-pointer adjustable ...) 用来创建变长向量,其中命名参数initial-element可以指定元素的初始值,fill-pointer可以指定初始原创 2013-12-29 22:31:33 · 2764 阅读 · 0 评论 -
Common Lisp学习之二:使用函数
1 定义函数(defun name (parameter*) body-form*)body可由任意Lisp表达式构成,它们将在函数调用时依次求值,而最后一个表达式的值将被返回。而使用return-from可以从函数任意位置立即返回。2 形参列表函数定义的括号中可以提供一系列的形参,当函数调用时,必须为它的每一个必要形参都提供一个实参。每个形参被绑定到对应的实参上。原创 2013-12-29 21:58:18 · 2038 阅读 · 0 评论 -
Common Lisp学习之四:简单数据结构及处理
1 字面数值在CL中,给定类型的数字可以有多种不同的字面表示方式,这些不同的形式将被读取器转化成相同的对象表示。例如10,20/2等都表示10。有理数在读取后都被规范化,分数被化简;整数语法:[+/-]123456比值语法:[+/-]1/4.2整数数值可以以特定的进制进行解释#b 二进制 #0 八进制 #x 十六进制 #36 三十六进制-数字集合从0-9 A-Z原创 2013-12-29 22:21:17 · 3756 阅读 · 2 评论 -
Common Lisp学习之三:使用变量
Common Lisp支持词法变量和动态变量(Special variable)。在一定程度上,词法变量类似于类C语言中的局部变量,只在特定的作用域中有效,在作用域外部不可见;而动态变量类似于全局变量,访问其的代码可以在任意时刻对其进行重新绑定。1 变量基础Common Lisp是一种动态强类型的语言。变量可以指向任意类型的对象,而类型保存在对象信息里,而不是变量上;同时所有的类型原创 2013-12-29 22:17:02 · 3744 阅读 · 1 评论 -
Common Lisp学习之一:初识CL的语法与语义
Lisp是一类语言的统称,指那些使用前缀表达式和S表达式进行代码编写和编译的语言。此类语言有CL,Scheme,Racket,Clojure等。Lisp语言和其他语言相比,其优势在于无比强大的抽象能力。可以在代码层面上进行抽象,利用Lisp的元编程技术,构造特定领域的DSL,进行自底向上的逐层开发。CL作为其中发展比较完善和标准化的一个分支,完全可以完成各种大型项目的开发需要。CL的学习资源也原创 2013-12-29 21:42:52 · 2371 阅读 · 0 评论 -
Scheme语言--简介
一年前其实有时间看完SICP这本书,后来因为种种原因,一直没有继续再学。因为SICP中使用Scheme确实应用不多。在Java,C++的语言眼里,Scheme确实很另类。如今MIT已经放弃了使用Scheme作为SICP的教学语言而转向python之际,我在此开始学习这本书与这门语言的学习。SICP主要使用Scheme语言来解决计算机科学中的一些问题。为了督促自己,每天都能学习。积小流而成原创 2010-04-30 23:13:00 · 7992 阅读 · 0 评论 -
mit-scheme user manual note
1 InstallationGoto page http://www.gnu.org/software/mit-scheme/ and find your os's source code and download it to local filesystem, decompress the tarbal. In the source code directory,run./configu原创 2014-11-30 21:24:40 · 1759 阅读 · 0 评论