在Lisp中使用cond时显示字符串

时间:2010-09-22 09:37:20

标签: string lisp common-lisp

我刚开始使用Lisp并需要一些帮助。这是技术上的功课,但是我试了一下,得到了我想要的东西:

(defun speed (kmp)  
  (cond ((> kmp 100) "Fast")    
        ((< kmp  40) "Slow") 
        (t           "Average")))

但是,如果我运行该程序,则会显示"Average"而不是Average(不带引号)。

如何让它显示没有引号的字符串?

3 个答案:

答案 0 :(得分:3)

您可以使用符号代替字符串。但请记住,符号将转换为大写:

> 'Average
AVERAGE 

如果您关心案例或想要嵌入空格,请使用format

 > (format t "Average")
 Average

答案 1 :(得分:2)

read-eval-print循环显示函数的返回值,该值是cond分支中的一个字符串。字符串通过用双引号括起来可读取。

你可以使用(写字符串(速度42))。不要担心它还会在双引号中显示字符串 - 这是在无引号输出后显示的write-string的返回值。

答案 2 :(得分:1)

您也可以使用符号代替字符串:

(defun speed (kmp)  
  (cond ((> kmp 100) 'fast)    
        ((< kmp  40) 'slow) 
        (t           'average)))

默认情况下,符号是大写的,因此内部快速是快速的。

您可以在任何情况下使用任何字符编写任何符号,并使用垂直条转义:

|The speeed is very fast!|

上面是Common Lisp中的有效符号,并且在内部存储时就像保存大小写一样。