在CL里我们可以这样: $ sbcl * (+ 1 2 3) 6 * (< 1 2 3) T * (< 2 3 1) NIL * 从简单的方面看, CL的+和<就是一个接收多参数的函数,有点类似cpp的add(1,2,3)和less(1,2,3)这样. 所以当C++11开始有了变参模板以后, 就可以玩多参数的加法和多参数比较了 #include <functional> template<typename O, typename A,typename B> boo…
Ok, Go ahead. 1 (a) (b) (c) (d) 2 注:union 在 Common Lisp 中的作用就是求两个集合的并集.但是这有一个前提,即给的两个列表已经满足集合的属性了.具体的操作过程似乎是对第一个 list 中的每一个元素在第二个 list 中查找,如无则标记一下:待第一个 list 的所有元素在第二个 list 中查完以后将所有标记过的元素放入一个 list 中与第二个 list 进行合并.这意味着,如果刚开始给的两个 list 不完全满足集合的属性,则会有重复出现…
这几天开始玩Common Lisp,遇上了一个有意思的问题,CL一般是解释运行,也有实现可以编译生成字节码(fas文件).我正在用的两种CL实现是SBCL和CLISP,前者是我从<实用Common Lisp编程>一书中看来的,CLISP相对于SBCL的特点之一就是CLISP把Lisp编译成字节码文件(这就和Java很类似了,倍感亲切),可是也不能直接编译出机器代码,这让我这个执着于汇编与C语言的感觉非常不爽,想到以前在<Python核心编程>上看到的"sh-bang&qu…
Common Lisp第三方库介绍 | (R "think-of-lisper" 'Albertlee) Common Lisp第三方库介绍 一个丰富且高质量的开发库集合,对于实际开发来说不可或缺.同样,一个方便统一的库管理安装工具,也是非常重要的. 对于实际的Common LISP 开发,推荐的组合为:  Emacs + SLIME + ASDF + Quicklisp 下面介绍一些常用的 Common Lisp 第三方库,列表依照 Quicklisp的库列表 数据库存储相关: CL…
1. 在Common Lisp 眼中,一个符号的symbol-value 和symbol-function 是不一样的,而Scheme对两者不作区分.在Scheme 里面,变量只有唯一对应的值,它可以是个函数,也可以是另一种对象.因此,在Scheme 中就不需要#' 或者funcall 了.Common Lisp 的:(let ((f #'(lambda (x) (1+ x))))(funcall f 2))在Scheme 中将变成:(let ((f (lambda (x) (1+ x))))(…
当你把  xx 当做符号使用时   'xx  ,  这个符号是没有任何函数/变量语义的, 仅仅是一个 符号而已(就像一个string一样) 但你可以对这个string有其他的用法,比如使用它所binding的同名函数.使用它所binding的同名动态变量 (要知道,“代码” 不过是 一串String, 这就是 Macro所做的事) 你把Symbol当成一种可绑定函数.变量的东西就可以了! 可以看到,  上图的 defun inc 和 defmacro inc 的内部实现时一模一样的. 它们其实都…
第三方软件库: http://download1.rpmfusion.org/free/fedora/releases/25/Everything/x86_64/os/repoview/index.html 原帖http://www.linuxdown.net/install/soft/2016/0303/4903.html 安装vim sudo dnf -y update sudo dnf install vim-enhanced common lisp 原帖:http://www.progr…
Difference between LET and LET* in Common LISP   LET   Parallel binding which means the bindings come to life at the same time and they do not shadow each other. The values are effective inside LET and they are undefined outside LET. Just like local…
Scheme and Common Lisp use different names for some of the basic system functions. Many Lisp programs can be translated to the other dialect simply by changing these names (or by providing the existing names as macros or functions). Compatibility pac…
sudo apt-get install slime audo apt-get install sbcl ;;sbcl+slime for common lisp ;;sudo apt-get install sbcl slime (setq inferior-lisp-program "/usr/bin/sbcl") ; your Lisp system (add-to-list 'load-path "/usr/share/emacs23/site-lisp/slime&…