Lisp之 程序的交互执行和非交互执行

9960阅读 3评论2013-01-24 Bean_lee
分类:LINUX

    学习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程序

     

     

上一篇:rdesktop 远程登陆公司环境
下一篇:Lisp之文件操作

文章评论