common lisp 里的几个操作符(2)】的更多相关文章

setf  赋值操作符,定义一个全局变量.返回值是最后一个赋值的结果. let 局部变量操作符.let表达式有两部分组成.第一部分是任意多的变量赋值,他们被包裹在一个()中,第二部分是任意数量的表示式作为 let 的函数体.let 表达式的返回值为 最后一个表达式的求值结果. cons 对象. cons 作用:把两个对象结合成一个 cons对象. 本质:cons 对象是一对指针.第一个是 car,第二是 cdr. 列表对象 = cons 对象 + nil.所有不是 Cons 对象的东西,就是一个…
集合 (Set) member 函数 默认使用 eql比较对象,可传入关键字参数 :test,作为比较的函数.关键字参数 :key,指定在每个元素上应用这个函数. > (member 2 '((1) (2)) :test #'equal :key #'car) ((2)) 直接找出满足条件的元素 > (member-if #'oddp '(2 3 4)) (3 4) 函数 adjoin 像是条件式的 cons .它接受一个对象及一个列表,如果对象还不是列表的成员,才构造对象至列表上. >…
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))))(…
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] 1.操作符是什么? 2.quote. 3.单引号是quote的缩写. 4.car与cdr方法. 5.古怪的if语句. 6.and语句. 7.判断是真假. null 与 not 方法. 8.递归. 9.缩排.…
第三方软件库: 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&…