2017年3月11日星期六

On Lisp

可扩展语言

lisp很灵活,很强大,blablabla
函数

可以引入累积器,将递归调用搞成尾递归,编译器优化成迭代

特别小的函数可考虑inline化,尽量避免显式调用compile
函数式编程

在可能的情况下,尽量避免副作用

把函数写成每次调用只修改它自身拥有的对象
实用函数

抽象,简洁,好的程序

一些自定义小工具,注意看group , flatten,prune的实现

> (duplicate 'a '(a b c a d))
(A D)

会返回第2个a后面的那些,方便链式调用;而非TRUE/FALSE,算个习惯用法吧

rmapcar可以递归处理元素

> (rmapcar #'princ '(1 2 (3 4 (5) 6) 7 (8 9)))
123456789
(1 2 (3 4 (5) 6) 7 (8 9))

函数作为返回值

没有评论:

发表评论