学习common lisp 笔记二

学了几章Practical LISP(Practical Common Lisp), 大概悟出LISP的两大优势:

1 LISP作为函数式编程(function programming), 其函数具有很低的耦合性,给定一个函数的输入参数,其输出在任何条件下都保持不变。

   LISP代码的书写就用一个函数包裹另外一个(堆)函数。

例子:

(defun prompt-for-cd ()
  (make-cd
   (prompt-read "Title")
   (prompt-read "Artist")
   (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0)
   (y-or-n-p "Ripped [y/n]: ")))
这里的定义了一个函数prompt-for-cd() ,其函数体是另一个函数调用:make-cd,make-cd 的参数又由若干函数组合,像这样一级一级组织起来。


2 使用宏(macro) 生成代码,在语法层次上提高程序的抽象能力。

这里LISP的宏要比C/C++的宏强大的多,有点类似于JAVA的反射,又远超过反射的功能。

例子:

(defmacro backwards (expr) (reverse expr))
这个宏把expr中的对象序列反序,但不执行,只返回代码。所以宏的功能在于调用其它函数来生成代码,而不是计算结果。

再由这些生成的代码拼成程序运行。宏生成代码在编译时就已经完成,不占用运行时间,这点和C/C++是一样的。


以上只是初步的心得,强大的宏仍然需要重点学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值