Practical Common Lisp学习笔记——之准备环境

翻译 2011年01月08日 02:48:00

2.泡沫,洗涤,重复:REPL的一个巡回

使用LispBox作为开发环境,使用Emacs提供文本编辑和SLIM

选择一个Lisp实现

Lisp不像PerlPythonVBC#Java,有固定的实现,Common Lisp只由一个标准定义。而且不像PerlPython由一个机构控制单个实现,也不像VBC#Java由一个公司控制典型实现。Common LispANSI管理标准,任何人想通过阅读标准制造编译器都是可以的而且是免费的。事实上Common Lisp的标准让你在各个编译器实现中,不论是开源还是商业, 都可以使用语言的特性。你能统计出符合标准的程序在不同实现上的性能差异。

为了库的通用性,Common Lisp提供一种灵活的方式写代码“有条件的”使用实现的特殊特性。

Allegro Common Lisp商业的实现最具典型,支持LinuxWindowsOSX。开源实现里面SBCL具有很高水平,编译为本机代码,支持多种Unixes,包括LinuxOSXSBCL是继承自CMUCL。另外OpenMCL也是很不错的选择,编译为机器码,在OSX上有很好的集合环境CarbonCocoa

准备并运行Lisp in a Box

Emacs中描述快捷键时,Ctrl键常使用C表示,比如:C-h,表示按下Crtl的同时按h键。也有M表示Meta(一般都是Alt)Emacs中自带的教程是C-h t,有空格则是在松开Ctrl键按下t键。手册是C-h i,键入C-h ?会有完整的列表。两个最有用的快捷键是C-h k让我们输入任何组合键后告诉我们哪些命令被调用,并且使用C-h w让我们输入一个命令后告诉我们被什么组合键调用。

Emacs中至关重要的是buffer(缓冲),在使用Emacs时所有被编辑的文件都用不同的缓冲表示。在任何时间只有一个当前的,当前的缓冲接受所有输入。在普通操作时会有切换缓冲,表示使用不同的缓冲当作当前缓冲,命令switch-to-buffer,绑定组合键C-x b,有缓冲名在Emacs的底部提示。当输入缓冲名后按Tab键会出现提示列表,列出包含有输入字符的缓冲。提示会建议一个默认缓冲,同意就按Return。也可以在菜单中使用Buffers来选择缓冲。

在某个特定的环境中,组合键能切换到特定缓冲,比如:当编辑Lisp源文件时,组合键C-c C-z切换缓冲到与Lisp交互。

释放你的想法:交互程序

Lisp in a Box首先看到的是:

 

       CL-USER>

 

这是Lisp的提示符,类似Unix或者DOSshell提示。但与shell不同的是shell读取并解释一行命令,而Lisp是读取Lisp表达式,按照Lisp的规则求值并且输出结果。这样无止境的读取,求值,输出就是为什么被称为read-eavl-print loop,简称REPL。这也被当做top-level listener或者Lisp listener

REPL中能定义程序元素,变量,函数,类和方法;对任何Lisp表达式求值;加载文件包含Lisp源文件或者编译代码;编译整个文件或者个别函数;进入调试器;步进代码;和检查个别Lisp对象的状态。

完全可以不借助任何其他编程环境仅仅依靠REPL和任何一个能正确排版Lisp代码的文本编辑,进行一个漂亮合理的编程。但是对真正的Lisp编程体验,需要一环境,比如SLIME,能通过REPL和整个编辑的源文件与Lisp交互。事实上,你不希望从源文件剪切和粘贴函数定义到REPL,或者加载整个文件只是因为你改变了一个函数;你的Lisp环境允许我们对个别表达式和文本编辑器中的整个文件求值或者编译。

Practical Common Lisp学习笔记(一)

写给准备把第一次给lisp的人
  • lxyeslxlx11
  • lxyeslxlx11
  • 2014年02月27日 08:45
  • 1197

在windows上安装common lisp开发环境

最近对lisp非常感兴趣,因此在google中搜索了“common lisp install windows”, 想装一个IDE玩玩。 第一条结果就是 “Getting going with mode...
  • yyhustim
  • yyhustim
  • 2014年01月12日 21:18
  • 2086

Common Lisp编程初步---环境搭建和外部lisp代码运行

1 介绍Lisp是世界上第二古老的语言,第一古老语言是Fortran。Lisp语言的创立者为John McCarthy,一位人工智能领域里的先驱。该语言自创立以来经历了50多年而不衰,是一种很有生命力...
  • RobertChenGuangzhi
  • RobertChenGuangzhi
  • 2016年04月17日 00:13
  • 6468

Practical Common Lisp学习笔记——之第5章函数

5.函数   定义新函数 一般用DEFUN宏定义函数,声明如下:   (defun name (parameter*)  "Optional documentation string."  body-...
  • honeycat
  • honeycat
  • 2013年07月07日 18:37
  • 794

如何查看 Common Lisp 的标准函数

如何查看 Common Lisp 的标准函数(这么叫不太准确,规范的名称似乎是操作符 Symbol ) 对于初学者来说,学习使用 Lisp 有一点很不习惯的地方就是不知道怎么查帮助,比如想了解下 ...
  • ydt_lwj
  • ydt_lwj
  • 2013年06月14日 10:58
  • 1376

想找一个可以用于实际生产环境的Common Lisp实现,您有推荐吗?

其实开始对Lisp的学习是
  • GerJeffrey47959633
  • GerJeffrey47959633
  • 2014年10月09日 17:47
  • 1256

ubuntu 搭建vim Lisp编程环境

一,clisp+vim的环境搭建过程: 在ubuntu环境下安装clisp很简单,直接apt-get 就可以,命令如下: sudo apt-get install clisp 安装成功后通过clisp...
  • ydt_lwj
  • ydt_lwj
  • 2013年03月19日 09:54
  • 3164

函数编程之Common Lisp

Common Lisp,缩写为CL(不要和缩写同为CL的组合逻辑混淆),作为Lisp的众多方言之一,由ANSI X3.226-1994(R1999)定义标准。它是为了标准化此前众多的Lisp分支而开...
  • KingBoyGoodFly
  • KingBoyGoodFly
  • 2015年05月25日 17:28
  • 984

Common Lisp学习之七:LISP的面向对象编程

1 面向对象和Common Lisp   面向对象的基本思想在于数据和操作的绑定-即封装,而更重要的是多态。CL和多数OO语言一样是基于类的,类通过层次结构组织在一起,形成了对象的分类系统。   ...
  • zzulp
  • zzulp
  • 2013年12月29日 22:43
  • 2945

Common Lisp学习之九:使用包

1 读取器如何处理包 每个包都有名字,(find-package name)可以通过包名来找到一个包。解释器当前使用包存储于全局变量*package*中。包的字面形式为#。 (package-name...
  • zzulp
  • zzulp
  • 2013年12月29日 22:49
  • 2326
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Practical Common Lisp学习笔记——之准备环境
举报原因:
原因补充:

(最多只允许输入30个字)