Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6866164
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: LINUX

2013-01-24 15:43:00

    学习Lisp也有一段时间了,基本在打基础,学习基本的语法,但是一直也没写个程序玩玩,当然了Helloworld 这种程序是不算了。今天写了个稍复杂的程序,运行了下,感觉不错。

    我在我的Ubuntu上装了CLISP,来编译运行我的程序。先看下CLISP 环境:

    

    进入了CLISP 交互环境,就可以执行相应的指令了。如下图:

    

   退出CLISP环境也比较简单(quit) (exit)(bye)都可以。

    


    这是一种使用CLISP编程的路径,可是我们不能总是用交互式的编程。作为一个C 程序员,我们习惯将源码文件编译成可执行文件。我们将我们想做的事情写成文件,然后执行。LISP也是可以的。

    

(defun leap-year(year)
    (
        and (zerop (mod year 4))
            (or (zerop (mod year 400))
                (not (zerop (mod year 100))))
    )
 )
(defun month-length(year mon)
    (case mon
        ((Jan Mar May July Aug Oct Dec) 31)
        ((Apr June Sept Nov) 30)
        ((Feb) (if ( = 1 (leap-year year)) 29 28))
        (otherwise "Unknown month")
    )
)

(format t "there are ~a days in 2012 Jan ~%" (month-length 2012 'Jan))


    上面这段代码比较简单,定义了两个函数,一个函数判断是否是闰年,第二个函数根据月份的英文缩写,返回该月份的天数。最后一行调用了两个函数,返回2013年1月的天数。我将这一段代码保存成文件,month.lisp

     clisp -c filename.lisp 可以编译lisp文件,会编译出同名的fas文件 filename.lisp。 除此外,还生成了lib文件,如下图所示:

     

    

    执行生成的month.fas可以执行,也需要CLISP调用。如下图所示:

    

   

    我接触LISP没多久,很多东西理解的还不深,请各路高手不吝赐教。


参考文献:

1 实用Common Lisp编程

2 ANSI Common Lisp 中文翻译版

非交互方式运行Lisp程序

     

     

阅读(1036) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~