主頁

Common Lisp 宏

Common Lisp 的宏 要理解 Common Lisp 的宏特性,就应该忘记 Java,C 里面的宏。因为与之相比,Common Lisp的宏强大十万倍。 Common Lisp的一些标准宏 除了基本的操作符,ANSI Common Lisp 将一些有用的宏引入了标准中。这些宏抽象了一些语言层面的细节,使得代码描述更加清晰。 条件功能:when 和 unless 一般的条件控判断可以使用 if 关键字,if 关键字的使用形式是: (if condition then-form [else-form]) 有这么一种情况,如果想在 then-form 里面执行多条语句,显然我们 不能 这样写 (if condition (form1) (form...

阅读更多

Common Lisp 变量

Common Lisp 中的变量 变量的基本知识 变量是一些可以保存值的具名位置,但是在Common Lisp中变量并不像Java、C++ 等语言那样带有确定的类型,即无需为变量声明可以保存对象的类型,一个变量可以保存任何类型的值,这些值带有可用于运行期类型检查的类型信息。所以,Common Lisp 是动态类型的- 类型错误会被动态地检测到;Common Lisp是强类型语言,所有类型的错误都会被检测到-即无法将一个对象作为其不属于的类型实例对待。 引入变量的几种方式 函数形参列表 let: 使用形式 (let (variable) body-form)。注意:形式体的最后一个表达式的值将作为let表达式的值返回。和函数形参类似,由let 引入的变量将在每次进入...

阅读更多

Common Lisp 数据结构

Common Lisp 数据结构 特殊符号 宏:# 类似于其他语言里面的反斜杠转义字符,该符号用于标记特殊意义的部分。 #\ : 紧跟字符字符或者字符的名称,如 #\a #' : 紧跟函数名,如 #'equal = function EQUAL #b、#o、#x : 表示二进制、八进制、十六进制 # : 紧跟的是一个向量 vector 存储表示 Lisp 中一个cons cell 表示一个有两个指针的内存区域。通常可以如下表示 图中,箭头表示的是指针。在Lisp 的最常见的 List 数据结构中,左指针指向是 (car list),右指针指向的是 (cdr list) 也可以这样表示 如果 list 中有 其他list 元素,例如((a b...

阅读更多

2018 秋招鸣金收兵

秋招结束了 一段求职生活结束了,陆续收到了上海邮电设计规划院、招银网络科技、以及小米有品的 Offer。Offer 都是在10月中旬以后陆续来的,其间翘首盼望之情只有经历过的人才懂得吧。 人生总是不断有纠葛彷徨。已经签了招银的三方以后,在某天下午又收到了来自小米有品的 Offer,十分欣喜,一分忧愁。一方面想留在南京城,陪伴我们家张馨月;四年交游大都在南京;而且一直梦想去做电商业务的技术部门。另一方面毁约流程繁复,东家或从中作梗。 回首这一个半月,看着同学纷纷发了网易、华为、顺丰的 Offer 我是很焦急的,有些慌张了,但是我依然按部就班地研究公司面经,做题,最后有所斩获也足以慰风尘了。一个两个Offer 并不能说明技术有多强,只能说明自己包装的好。我深知自己的缺陷:广而不精...

阅读更多

致我亲爱的月

致我亲爱的月 你总说我的表白不够正式,我尝试组织语言,像王小波那样的坏坏调皮连珠妙语。但是我发现我似乎做不到。我一想该如何组织这样的语言,单核的脑子就开始线程轮转,一千种想法并发,但是又瞬间消失,我想抓住它们,但是只能留下只言片语。   初见你时,只是觉得你的每一笑都很清新。当每天醒来手机对面都是你,我才觉得你的一举一动都那么亲切。月,我喜欢你,希望未来的日子里一直有你!!!与你在一起的日子甘之如饴!!! 2018-10-15 月,今天我巨开心。遇到你以后,似乎所有积累的努力都陆续Pay off 了。 2018-10-17 月,把我对你喜欢写在 PI 里,3.141592653589793238462643383 2795028841971 6939...

阅读更多

Linux 创建定时任务 crontab

Linux 定时任务 由于本博客是部署在自己的阿里云主机上,每次登录敲命令还是很麻烦的,所以我决定创建定时任务定时同步 Github 并部署。 A. 创建定时任务需要执行的命令 sync。 1. 首先获取进程的 pid, 可以用下面这行 shell 命令 pid=$(ps -ef|grep 线程名称|grep -v grep|awk '{print $2 }') #这里用 grep -v grep 排除自身结果 然后用kill $pid杀死过去的进程任务,避免导致端口占用的问题。 2. 拉取 Github 上的最新内容 git pull 3. 部署博客运行代码 B. 创建 crontab 定时任务。 1. 编辑环境变量。 向cron进程提交一个cronta...

阅读更多

十年以后我们今天的代码会怎样

十年后看今天的代码 Java 半年一次 Release,伴随着新特性的是越来越多的@Deprecated,语言在升级,在变得更加容易使用,但是机制更加复杂。 我觉得有些过度设计了。语言的实现应该是围绕需求的,依照现在语言的发展趋势来看,频繁更新导致旧的代码难以拓展,语言版本更新到一定的程度系统代码可能就完全不可用了,这显然是违背初衷的。 我认为一门优秀的语言原理语法应该足够简单,扩展的应当是其解析器。Lisp或许是一个解决我的这种担忧的选择。拭目以待!!!

阅读更多

Makefile使用

Makefile使用 认真是最可贵的品质 makefile是linux下c编译工具,makefile指明程序编译过程中需要依赖的资源文件和编译命令. 下面使用实例说明. 一.说明用例 linux在终端使用命令mkdir testMake建立文件夹testMake,切换到该路径下cd testMake 使用vim建立文件如vim example.h.需要使用的三个文件分别是example.c,example.h和main.c. example.h文件的内容为 #include <stdio.h> void exampleFunction(void); example.c的文件内容为 #include "example.h" void exam...

阅读更多