代码改变世界

随笔分类 -  lisp

[置顶] 屠夫与大夫

2013-04-06 18:39 by java20130722, 210 阅读, 收藏,
摘要: 一个刚做了爸爸的屠夫气愤地说。“简直是疯了!加上产科医生的诊费、住院费和护理费,这个孩子竟然要800块钱1公斤!”可能很多人看到这个笑话时,都在哈哈大笑,嘲笑屠夫的职业病。但是又有多少程序员想过我们自己或许正在做和这个屠夫相同的事呢?屠夫每天拿着一把大刀剁肉,心中就只有刀。我们每天拿个xxyy的编程语言写程序,是不是我们心中就只有xxyy了呢?我们的思维会不会被xxyy所奴获了呢?现在不少的公司使用考一些比较古怪的语法来测试应聘者是否对某种编程语言足够熟悉。似乎招聘方和应聘者都以此为乐,市面上类似的书籍也层出不穷。但是,我们使用编程语言,是希望能够用编程语言清楚的反映我们想要做到的事情,让他乖 阅读全文

Common Lisp中的apply和append

2013-03-05 16:25 by java20130722, 496 阅读, 收藏,
摘要: appendLisp中的append就是把多个list合并成一个list。如:> (append '(a) '(b) '(c d)) (A B C D)注意:1.append后的每一个cell都必须是list,下面这个语句则会报错> (append 'a 'b) bad syntax for array: APPEND 2.同时,append不是嵌套的,如:> (append '((a b) (c d)) '(e)) ((A B) (C D) E) apply前面提到append不能对嵌套的执行合并,如:> app 阅读全文

Common Lisp中的car和cdr

2013-03-04 15:31 by java20130722, 653 阅读, 收藏,
摘要: car用于得到list中的第一个cell的值:> (car '(a b c)) Acdr用于得到list中除了第一个cell之外的值,并作为一个新的list返回:>(cdr '(a b c)) (B C)car和cdr最强大的功能是可以通过搭配"a"和“d”达到嵌套的效果:(cadr list) = (car (cdr list))> (cadr '(a b c)) B(cdar list) = (cdr (car list))>(cdar '((1 2 3) a b c)) (2 3) 可以通过搭配“a”和“d”的顺 阅读全文