一些主要区别: ELisp 传统上使用动态作用域规则; Common Lisp 使用词法作用域规则。通过动态作用域,函数可以访问调用函数中声明的局部变量,并且通常已不再受欢迎。从 Emacs 24 开始,Emacs 允许在逐个文件的基础上进行可选的词法作用域(并且核心发行版中的所有文件都将逐步转换)。 动态范围的 ELisp 没有闭包,这使得...
Lisp-1 vs Lisp-2[1] Scheme的求值模型非常简单:只是用一个名字空间,所有表达式中相应位置的值应该是明确的。 Common Lisp和Scheme最大的不同是,函数名字空间和数据的名字空间是分离的。操作函数名字空间的语句包括,defun,flet,labels,defmethod和defgeneric等方法。要用函数名作为另一个函数的参数来传递函数时,需...
foo是一个未定义的符号,因此会出现这个警告。在Common Lisp中,我们应该使用defvar或者defparameter来定义...
因此我们说 Common Lisp 拥有独立的函数和变量名字空间 (name-space)。我们可以同时有一个叫 foo 的变量以及一个叫 foo 的函数,而且它们不必相同。这种情形可能会让人不解,并且可能在一定程度上影响代码的可读性,但这是 Common Lisp 程序员必须面对的问题。 Common Lisp 还提供了两个函数用于将符号映射到它所代表...
我使用的是Lisp方言,但也学习了一些Haskell。它们有一些相似之处,但CommonLisp中的主要区别似乎是,您不必为每个函数、参数等定义类型,而在Haskell中,您可以这样做。我的问题是,在不同的应用程序或用途中,像Haskell这样的语言可能比CommonLisp这样更动态的语言更有意义。例如,Lisp似乎可以用于更底层的编程,例 ...
Lisp vs RISC or What Common Lisp Implementors Really WantMacLachlan, Robert A
Common Lisp编译程序的小技巧 这几天开始玩Common Lisp,遇上了一个有意思的问题,CL一般是解释运行,也有实现可以编译生成字节码(fas文件).我正在用的两种CL实现是SBCL和CLISP,前者是我从<实用Common Lisp编程>一书中看来的,CLISP相对于SBCL的特点之一就是CLISP把Lisp编译成字节码文件(这就和Java很类似了,倍感亲切...
这里有几种选择.首先,Scheme和Common Lisp在相当深的方式(如范围界定)方面有很大不同; 你应该选择一个开始并坚持一段时间.我是Common Lisp的粉丝,但这可能是那些vi-vs-EMACS宗教问题之一. 对于Scheme,请使用Kent Dybvig的Scheme Programming Language,然后是SICP. 对于Common Lisp,以及Practical Common Lisp,我推荐Dav...
在Common Lisp中存储日期 在Common Lisp中,可以使用内置的日期和时间库来存储和处理日期。日期可以表示为一个包含年、月、日等信息的对象。 Common Lisp提供了一些函数和宏来处理日期,例如: (get-decoded-time): 这个函数可以获取当前的日期和时间,并返回一个包含各个时间字段的列表。 (encode-universal-time second...
not Common Lisp. Common Lisp does not have publicly available library (except Allegro Common Lisp), too. But SLib is a choice for Scheme, and DrScheme is a free, comprehensive implementation for Scheme, though I missed it at the first time. For macro, I can also use defmacro in Scheme,...