Common Lisp入门笔记(二)赋值与输入输出 |
您所在的位置:网站首页 › 赋值和输入 › Common Lisp入门笔记(二)赋值与输入输出 |
摘自 《Lisp语言- 陈光喜》 一、赋值 (1)let Lisp中使用let来完成局部变量的定义。其形式为:(let ((var1 exp1)(var2 exp2)…(varn expn)) exps) 其中操作符 let 表明将定义局部变量。 (vari expi)对表示变量名 vari, 该变量的初始值为表达式 expi的值。Let 语句中的 exps 部分为表达式集合,完成所需要的处理。所定义的诸变量 var1,…,varn在这些表达式有效,即在 let 语句体内有效。整个 let 语句的返回值为语句体中最后一条语句的值。如: >(let ((a 1) (b 2) (c (+ 5 3))) (+ a (* b c)) (- (* a c) (* b c))) >-8
(2)defparameter defparameter用来实现全局变量定义。一般约定全局变量的命名为左右各写一个*号,如: > (defparameter *var* 123) >*VAR*
(3)defconstant defconstant 用来定义全局常量,如: >(defconstant c 12) >C 要判断某个符号是否被定义为全局变量或常量,可以使用 boundp 来检验。例如: >(boundp 'c) >T
(4)setf setf是常用赋值操作符。对某个符号(没有定义为局部变量)首次使用setf赋值,该符号将被系统作为全局变量。这是一种隐式定义全局变量的方法,但是不值得提倡。 >(setf *var* 1234) >1234
二、 输入输出 (1)Common Lisp 最常用输出命令是format。用法如下: > (format t "~%The clever dog can do ~A + ~A =~A ." 2 35) The clever dog can do 2 + 3 =5 . NIL Fortmat 的第一个参数是输出地,此例的参数 t 表示输出到 toplevel;第二个参数是输出格式串,~% 表示换行, ~A 表示该位置将用对应的参数进行替换。 Common Lisp 的打印格式串有多种控制符,如: ~A,~S,~P 是用于对象控制的。例如, >(format t "~%TildeS prints ~S~%TildeA prints ~A " 'ACL::asymbol 'ACL::asymbol ) TildeS prints ACL::ASYMBOL TildeA prints ASYMBOL NIL 此例应注意~A 与~S 差别。~S 可以打印出控制符,而~A 不能。~P 打印复数后缀”s”。 ~D ~B ~O ~X ~R 为整数控制符,它们分别打印十进制、二进制、八进制、十六进制、基数。 > (format nil " ~D ~B ~O ~X ~R" 12 12 12 12 12) " 12 1100 14 C twelve" ~E ~F ~G ~$为浮点数控制符,分别按照指数格式、定点式、浮点式、浮点定点结合方式。例, > (format nil " ~E ~F ~G ~$" 123450 123450 123450 123450) " 1.2345E5 123450.0 123450. 123450.00" > (format nil " ~E ~F ~G ~$" 123.450 123.450 123.450 12.3450) " 1.2345E2 123.45 123.45 12.35" ~n%,~n&,~| 为空白控制符,分别表示 n 换行,n-1 行,新一页。 > (format nil "begin ~2% and ~2&end") "begin and end " 值得注意的是,在上述例子中,format 的第一个参数为 nil 时,打印执行后返回值不出现 nil;而参数 为 t 时,打印执行后返回值出现 nil> (SETF A (READ)) 这就是所谓 Lisp 的副产品
(2)Common Lisp的标准输入运算符是read ,如: > (SETF A (READ)) >12
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |