common lisp 学习第一天 初步接触

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据泵导入分区表,数据泵导入分区表统计信息报错(七)

其实问题的引出是由于出现第一篇文章中描述的问题&#xff0c;不过随着问题的深入研究&#xff0c;挖掘出了一些隐藏的很深的问题&#xff0c;不过问题的研究也慢慢脱离了原本的问题。在解决了表统计信息锁定的问题后&#xff0c;在回过头看看导致第一篇文章中错误的具体原因。…

django ORM创建数据库方法

1、指定连接pymysql(python3.x) 先配置_init_.py import pymysqlpymysql.install_as_MySQLdb() 2、配置连接mysql文件信息 settings.py DATABASES {default: {ENGINE: django.db.backends.mysql, NAME: django_orm, #你的数据库名称USER: root, #你的数据库用户名PASSWOR…

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

//简单数据操作单一记录> (defun make-cd (title artist rating ripped)(list :title title :artist artist :rating rating :ripped ripped))make-cd> (make-cd "Roses" "Kathy Mattea" 7 t)(:TITLE "Roses" :ARTIST "Kathy Mattea&…

通过配置文件登陆有密码的mysql不需要输入密码

下面方式通过配置文件登陆有密码的mysql&#xff0c;不需要输入密码。 &#xff08;1&#xff09;先配置一个.my.cnf配置文件。 [client]userxxxxpasswordxxxxxx (2)直接登陆mysql服务 [rootlocalhost scripts]# HOME/var/lib/zabbix mysql 直接登陆&#xff0c;这里的HOME一…

并联机械臂的pid控制Matlab,机械手PID控制(chap2_1ctrl.m)

【实例简介】【实例截图】【核心代码】function [sys,x0,str,ts] spacemodel(t,x,u,flag)switch flag,case 0,[sys,x0,str,ts]mdlInitializeSizes;case 3,sysmdlOutputs(t,x,u);case {2,4,9}sys[];otherwiseerror([Unhandled flag ,num2str(flag)]);endfunction [sys,x0,str,…

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

//函数定义(defun name(parameter*函数参数)"Optional documentation string.函数描述"body-form*函数体)函数名称风格frob-widget函数描述&#xff1a;(documentation foo function)获取foo函数的描述函数体由任意数量的lisp表达式构成&#xff0c;在函数被调用时依…

【计算机视觉】基于OpenCV的人脸识别

一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法&#xff0c;为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面&#xff0c;OpenCV 已被广泛运用在各种项目上&#xff0c;从谷歌街景的图片拼接&#xff0c;到交互艺术展…

Mysql显示创建表的sql语句

show create table 表名 返回 create table A( ……

oracle parallel_max_servers,PARALLEL_MAX_SERVERS参数

PARALLEL_MAX_SERVERS参数用于设置系统中允许的最大并行进程数。Oracle的文档对于这个参数的描述如下&#xff1a;PARALLEL_MAX_SERVERS specifies the maximum number of parallelexecution processes and parallel recovery processes for aninstance. As demand increases, …

[转]python新手必碰到的问题---encode与decode,中文乱码--转载

edu.codepub.com/2009/1029/17037.php 这个问题在python3.0里已经解决了。 这有篇很好的文章&#xff0c;可以明白这个问题: 为什么会报错“UnicodeEncodeError: ascii codec cant encode characters in position 0-1: ordinal not in range(128)”&#xff1f;本文就来研究一下…

Mysql 休眠连接过多,有可能导致“Too many connections”的错误

查看所有连接 show processlist设置休眠连接超时时间60秒&#xff1a;my.ini中mysqld节中添加wait-timeout60可以解决Mysql.Data.dll连接释放后连接没有真正断开的问题。

检测端口是否能连通

telnet 192.168.0.111 801检测192.168.0.111的801端口是否能连通&#xff0c;如果提示不能连接则有可能是防火墙开启或者端口没有监听程序。window7需要安装telnet客户端才能执行该命令。

oracle 其他表空间,Oracle查询表空间使用情况以及其他查询

alter system kill session 436,35123;7.RAC环境中锁查找SELECT inst_id,DECODE(request,0,Holder: ,Waiter: )||sid sess,id1, id2, lmode, request, type,block,ctimeFROM GV$LOCKWHERE (id1, id2, type) IN(SELECT id1, id2, type FROM GV$LOCK WHERE request>0)ORDER BY…

四则运算题目生成程序(基于控制台)

基于控制台的四则运算 代码地址 a.需求分析 运算符为 , −, , 除了整数以外&#xff0c;还要支持真分数的四则运算&#xff0c;真分数的运算&#xff0c;例如&#xff1a;1/6 1/8 7/24要求能处理用户输入的真分数&#xff0c; 如 1/2, 5/12 等并且要求能处理用户的输入&#…

前端学习(2306):react之组件使用

Home.js import React, {Component} from react;class Home extends Component {render() {return (<div><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2{parseInt(Math.random()*10)}</div></div>);} }export …

input的属性AutoComplete——关闭浏览器文本框自动提示

1. 有时候我们并不需要AutoComplete&#xff0c;例如需要用户自己再次输入而非自动完成。只要将所在表单元素的autocomplete属性设置为off即可。<form>请双击文本框 <input type"text" name"wd" autocomplete"off"> <input type&…

oracle过滤器基础,示例过滤器表达式 (Oracle Solaris Studio 12.2:性能分析器)

示例过滤器表达式本节介绍可通过 er_print -filters 命令以及在分析器过滤对话框中使用的过滤器表达式的示例。利用 er_print -filters 命令&#xff0c;过滤器表达式用单引号引起来&#xff0c;如下所示&#xff1a;er_print -filters FNAME("myfunc") SOME IN USTA…

前端学习(2306):react之组件使用之图片使用

Home.js import React, {Component,Fragment} from react; import ImgA from "../assset/index.jpg" class Home extends Component {render() {return (<Fragment><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2…

CodeJock 实现MFC换肤

Skin,Skin#64位编译的dll文件没有找到&#xff0c;也没有源码可以编译&#xff0c;最后找到了Codejock换肤的库&#xff0c;源码编译生成64位dll进行MFC换肤 安装Codejock后使用安装路径下的Deploy.exe选择生成64位对应的dll和lib&#xff0c;ToolkitPro1531vc100x64D.dll自动生…