【问题标题】:*print-escape* not behaving correctly on Debian?*print-escape* 在 Debian 上的行为不正确?
【发布时间】:2015-04-11 07:08:41
【问题描述】:

我在大学和一本教科书中学习 clisp,在学习字符、编码等时,我被教导过

  • print-escape 在顶层默认设置为 nil
  • print-escape 为 null 时,字符会像这样打印(> 是 clisp 提示符):
> #\newline
#\nEWLINE
> #\space
#\sPACE
> #\a
#\a
  • print-escape 被赋予任何其他值(例如,使用 (setq print-escape t) )时,字符会以它们“真正”的方式显示(我不知道该如何解释,但我想你明白我的意思):
> (setq *print-escape* t)
t
> #\newline


> #\space

> #\a
a

我遇到的问题是我在 Debian Wheezy 上安装了 clisp(版本 1:2.49-8.1),但我得到的结果完全不同,但恰恰相反: - print-escape 默认为我返回 t - 字符被打印为字符(即#\a => #\a),print-escape 设置为 t,并且它们“真正”是(即#\a => a)之后我将 print-escape 设置为 nil。

听起来课程材料有错误,对吧?或者是否有任何其他 clisp 顶级变量可能对此产生影响并且可能在 Debian 中设置不同,以便我得到完全相反的结果/行为?

【问题讨论】:

    标签: debian common-lisp clisp


    【解决方案1】:

    您可以在 Common Lisp Hyperspec 中查找 Common Lisp 标准(CLisp 是 Common Lisp 的实现)(搜索 CLHS *print-escape*,或使用搜索 http://l1sp.org,或使用 http://l1sp.org/cl/*print-escape*)。

    该标准说它默认绑定到t,并且实现尝试以read将它们返回的方式打印内容会产生一个equal的值。

    CLisp 实现说明 (http://www.clisp.org/impnotes.html) 没有提及与 *print-escape* 结合使用的字符。由于它确实在许多其他情况下认真尝试打印readably,我认为您看到的是预期和预期的行为。

    然而,这有很多实现依赖。例如,#\space 可能会被其他实现打印为 #\(锐号反斜杠空格)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2016-11-13
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多