Answers:
1+和1-递增和递减代替(+ a 1)或(- b 1)尝试(1+ a)或(1- b)。
1+解析为两个标记,1和+?我以为是+1。
GNU Common Lisp
~v^在向上和出指令~^是最常用的格式化操作的最后一个列表项后,终止列表中使用。但是,它也可以与v修饰符一起使用以使用参数,在这种情况下,如果该参数为零,它将终止。这对于处理由产生的零特别有用dotimes。
(loop as n from 1 to 10 do(format t"~d~%"n))
(dotimes(n 11)(if(> n 0)(format t"~d~%"n)))
(dotimes(n 11)(format t"~v^~d~%"n n))
format(condition)的第一个参数format可以是t,nilaka ()或流中的一个。如果传递了t,则将输出到stdout,如果nil它将格式化后的输出作为字符串返回。可以有条件地使用它。上面的示例可以写成如下简短形式:
(dotimes(n 11)(format(> n 0)"~d~%"n))
如果输出了值,则返回值为nil。因此,它也可以用作do循环的终止条件:
(do((n 11))((<(decf n)1))(format t"~d~%"n))
(do((n 11))((format(>(decf n)0)"~d~%"n)))
~[...~]条件格式化程序使用一个参数,然后从索引列表中选择一个格式化字符串。一个常见的用例是使用默认格式化程序~:;在零与非零之间进行选择。
(dotimes(n 11)(format t"~v^~[~r~:;~d~]~%"n(mod n 3)n))
条件格式器也可以嵌套,在这种情况下,每个格式器将依次使用一个参数。
~&在上面的每个示例中,~%用于发出换行符。在大多数情况下,可以用文字换行符代替。另一个选择是使用~&,当且仅当输出光标不在行的开头(也称为a)时,它才会发出换行符fresh-line。
二者~%并~&还可以采取一个参数,与v改性剂或作为恒定,并且将产生尽可能多的换行。他们还将高兴地接受否定论点,在这种情况下,他们什么也不会发出。
实用的Lisp18
。一些格式食谱
Common Lisp语言,第二版
22.3.3。格式化输出到字符流