【问题标题】:Displaying a string while using cond in Lisp在 Lisp 中使用 cond 时显示字符串
【发布时间】:2010-09-22 09:37:19
【问题描述】:
我刚开始使用 Lisp,需要一些帮助。这在技术上是家庭作业,但我试了一下,得到了一些我想要的东西:
(defun speed (kmp)
(cond ((> kmp 100) "Fast")
((< kmp 40) "Slow")
(t "Average")))
但是,如果我运行程序,它会显示 "Average" 而不仅仅是 Average(不带引号)。
如何让它显示不带引号的字符串?
【问题讨论】:
标签:
string
lisp
common-lisp
【解决方案1】:
您可以使用符号代替字符串。但请记住,符号将被转换为大写:
> 'Average
AVERAGE
如果您关心大小写或想嵌入空格,请使用format:
> (format t "Average")
Average
【解决方案2】:
read-eval-print 循环显示函数的返回值,它是 cond 分支中的字符串之一。通过用双引号将字符串括起来,以可读的方式打印。
您可以使用 (write-string (speed 42))。不用担心它还会在双引号中显示字符串 - 这是 write-string 的返回值,显示在无引号输出之后。
【解决方案3】:
你也可以用符号代替字符串:
(defun speed (kmp)
(cond ((> kmp 100) 'fast)
((< kmp 40) 'slow)
(t 'average)))
符号默认是大写的,所以内部快就是快。
您可以在任何情况下使用任何字符使用竖线转义来编写任何符号:
|The speeed is very fast!|
Above 是 Common Lisp 中的一个有效符号,并在内部存储,就像您在保留大小写的情况下编写它一样。