`
mmdev
  • 浏览: 12935437 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Lisp语言:控制台输出与输入

 
阅读更多

Lisp全名是Lisp Processor,就是列表处理语言的意思,所以Lisp语言以列表为中心。正因为这个原因,很多Lisp语言的教程在简单介绍基本Lisp后就开始讨论Lisp中的列表,出现一堆令人费解的列表和无尽的括号。对于很多普通的程序员来讲,这种方式总是让人觉的不舒服,难道不能像学习一般语言那样进行学习吗?


或许我们可以试试!


下面我们像写一个普通c或者是java程序那样写个Lisp程序。大家要注意的是这里的Lisp程序从代码风格和设计思路上都没有按Lisp的套路来,Lisp高手们不要喷,之所以这样做是为了让非Lisp程序员舒服一些。


既然是普通的程序,就定义一个main函数作为入口吧,虽然Lisp根本不在乎你定义的是什么名字的函数。

函数定义用的是defun关键字,定义main函数大概像下面这个样子:

(defun main ()


然后我们希望提示用户输入一些字符,并打印出来。

打印可以用format, 向标准设备输出内容的语句像这个样子:(format *query-io* "out put message")

然后后面加一句(force-output *query-io*),主要目的是将上面输出的信息强制输出,不等待换行符的出现。

从控制台获取输入用的是read-line函数,完整语句是(read-line *query-io*),然后通过setq函数可以将获取的输入赋予一个变量。

最后再通过format函数将变量输出到控制台。


完整的代码如下:

(defun main ()


(format *query-io* "Try to input something here:")
(force-output *query-io*)
(setq inputString (read-line *query-io*))
(format *query-io* "~a ~a ~%" "What you inputed is:" inputString)
(force-output *query-io*)

)

其中将获取的变量输出到控制台的语句稍微复杂一点,使用了格式字符串"~a ~a ~%"。其中的~a会被替换为后面跟着的参数,按参数顺序依次替换,而~%表示换行。


写完后保存为一个.lisp文件,然后在clisp环境中将这个文件load进来,执行(main)就有下面的执行结果了。

这样看起来是不是和我们学习的其它语言差不多呢? 哈哈,后面继续用这种方式学习,然后慢慢学习Lisp和其它语言不同的地方。




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics