http://common-lisp.net/project/lispbox/

lispbox 集成了Emacs、Slime和CCL。
解压后直接运行lispbox.bat即可
//(quote x) 返回 x,我们简记为 'x
> (quote x)
x
> 'x
x
//(atom x) 当 x 是一个原子或者空表时返回原子 t,否则返回NIL。在 Common Lisp 中我们习惯用原子 t 表示真,而用空表 ()和NIL 表示假。
> (atom 'a)
t
> (atom '(a b c))
NIL
> (atom '())
t

一个被引用的表仅仅被视为表
> (atom '(atom 'a))
NIL

//(eq x y) 当 x 和y 指向相同的对象的时候返回t,否则返回NIL,值得注意的是在Common Lisp中,原子对象在内存中只会有一份拷贝,所以(eq 'a 'a)返回t
> (eq 'a 'a)
t
> (eq 'a 'b)
NIL
> (eq '() '())
t
> (eq '(a b c) '(a b c))
NIL
//(car x) 要求 x 是一个表,它返回 x 中的第一个元素
> (car '(a b))
a

//(cdr x) 同样要求 x 是一个表,它返回x中除第一个元素之外的所有元素组成的表
> (cdr '(a b c))
(b c)

//(cons x y)期望y的值是一个表并且返回一个新表,它的第一个元素是x的值, 后面跟着y的值的各个元素. 
> (cons 'a '(b c))
(a b c)

(cons x y) 返回一个cons cell (x y),如果y不是一个list,将会一dotted pair形式展现这个cons cell
> (cons 'a 'b)
(a . b)

一个cons cell的第二项如果是另一个cons cell,就表示成表的形式
> (cons 'a (cons 'b 'c))
(a b . c)
若一个cons cell第二项为空,就省略不写
> (cons 'a (cons 'b ()))
(a b)
这样,多重的cons cell就构成了表:
> (cons 'a (cons 'b (cons 'c ())))
(a b c)

//函数表示为(lambda (...) e),其中 ...是原子(叫做参数),e是表达式
> (lambda (x) (cons x '(b)))
#<Anonymous Function #x2100D5CBFF>
函数调用:((lambda (...) e) ...) 表达式中第一个元素为函数
> ((lambda (x) (cons x '(b))) 'a)
(a b)

> ((lambda (x y) (cons x y)) 'a '(b))
(a b)
> ((lambda (x y) (cons x (cdr y)))
'z
'(a b c))
(z b c)

参数在表达式中不但可以作为自变量也可以作为操作符使用(不是cl,在环境中报错)
> ((lambda (f) (f '(b c)))
'(lambda (x) (cons 'a x)))
(a b c)

//Emacs快捷键
C-x C-f 创建新文件
C-x C-s 保存工作文件
C-c C-c 重新编译
C-c C-z 切换到REPL
//编写hello world函数并保存到文件hello.lisp中。
(defun hello-world() 
(format t "hello, world!"))

加载lisp文件(带相对路径)
> (load "./test/hello.lisp")
#P"d:/Program Files/lispbox-0.7/test/hello.lisp"
执行函数
> (hello-world)
hello, world!
加载编译后的文件,compile-file先将文件编译成fsl并返回fsl文件名称。
> (load (compile-file "./test/hello.lisp"))
//列表
> (list 1 2 3)
(1 2 3)
属性列表(property list) plist
> (list :a 1 :b 2 :c 3)
(:A 1 :B 2 :C 3)

返回执行符号后的值
> (getf (list :a 1 :b 2 :c 3) :a)
1

common lisp 学习第一天 初步接触相关推荐

  1. Common Lisp学习之一:初识CL的语法与语义

    Lisp是一类语言的统称,指那些使用前缀表达式和S表达式进行代码编写和编译的语言.此类语言有CL,Scheme,Racket,Clojure等.Lisp语言和其他语言相比,其优势在于无比强大的抽象能力 ...

  2. common Lisp学习笔记(十二)

    12 Structure and The Type Syetem 12.2 typep, type-of 12.3 defining structures 12.5 accessing, modify ...

  3. common lisp 学习第三天 函数、注释

    //函数定义 (defun name(parameter*函数参数) "Optional documentation string.函数描述" body-form*函数体) 函数名 ...

  4. VS 2008 Feature Pack界面开发学习笔记之初步接触

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ 打算将最近学到的VS 2008 Feature Pack界面开发的一些心得写出来.VS 2010都出来了,我还刚用V ...

  5. common lisp 学习第四天 变量、宏

    //变量 //引入变量:变量作用域括号内 (let ((x 10) (y 20) z) ...) 引入变量列表中的变量 (let* ((x 10)  (y (+ x 10)) ...) //全局变量 ...

  6. common lisp 学习第二天 简单数据库操作

    //简单数据操作 单一记录 > (defun make-cd (title artist rating ripped) (list :title title :artist artist :ra ...

  7. Common Lisp语言快速入门

    zhezhelin Common Lisp语言快速入门 Lisp是软件领域的分裂力量.一方面,Lisp爱好者誓言Lisp比软件领域内的其它语言都更加快捷.整洁和强大:而反对者则辩称,不可靠的执行和库支 ...

  8. Common Lisp 初学者快速入门指导

    看了<黑客与画家>,对Lisp语言比较好奇,于是就弄了本<Lisp使用教程>,有空的时候就学习一下.Lisp的实现有很多,我用的Emacs+sbcl+slime,因为网上资料比 ...

  9. Practical Common Lisp [个人翻译版]

    1. 引言 ********** Lisp?!啥玩意? ========== 如果你也认为简洁优雅的代码是你的追求,那Lisp就是你的最佳选择. 使用Lisp,你可以写出比其他语言更简洁的代码,同时多 ...

最新文章

  1. 模块计算机类型x64与目标计算机类型X86冲突
  2. 7.11.4 第一个程序 设置环境变量
  3. bat窗口大小设置_DOS处理 CMD提速 BAT恶搞
  4. 【netcore基础】.Net core自动作业之Hangfire
  5. n级阶梯,人一步只能上1~2级,求一共有几种走法?
  6. 关于值类型和引用 类型
  7. mysql创建工作经历表_国内首款 Serverless MySQL 数据库重磅发布!
  8. 1+X 网络系统 建设与运维(中级)实验
  9. 同城货运主导全新商流体系:智慧物流成胜负关键?
  10. Java面试通关神器,冲鸭,进大厂!
  11. 基于51单片机的遥控小车
  12. oracle雾化试图_ORACLE物化视图具体解释
  13. 分布式键值存储ETCD
  14. Online Learning and Pricing with Reusable Resources: Linear Bandits with Sub-Exponential Rewards: Li
  15. OpenResty 连接Redis
  16. mock格式数据整理
  17. Web容器启动Spring
  18. html门户网站模板(源码)
  19. STM32开发(一)虚拟机 + VScode + STM32Cube 开发STM32|CSDN创作打卡
  20. 公众号原主体已注销如何办理迁移及公证书?

热门文章

  1. 前端学习(2775):方式2进行路由跳转
  2. 前端学习(2487):在VUE中使用element-ui的el-select组件时出现该报错
  3. 前端学习(2160):vuecli项目初始化过程
  4. 前端学习(1424):ajax低版本兼容问题
  5. 前端学习(80):按类型划分标签(inline)
  6. mybatis学习(10): sql server身份验证和windows身份验证
  7. 第六十四期:微软将不再把 .NET Framework API 移植到 .NET Core 3.0
  8. java学习(171): 枚举类
  9. java学习(46):无参带返回
  10. 机器学习算法总结--EM算法