将上标 2 (²) 符号转换为字符串



我正试图从一些lisp文件中获得一串代码,以创建unix文件名并在网页上显示:

(let ((code "(defun ² (x) (* x x))"))
(second (read-from-string code)))

计算结果为|2|。事实上,只要输入,计算结果就是|2|,而不是|²|

从文件中读取code字符串。我使用的是SBCL 2.2.10.

在此方案中,字符串"x²"被解析为与字符串"x2"相同:

(read-from-string "x²")
(read-from-string "x2")

如何使read-from-string正确,而不修改字符串中的代码?

参见SBCL手册第7.1.2节。默认情况下,SBCL扩展阅读器以规范化所有符号。可以通过

防止当前可读表出现这种情况(setf (sb-ext:readtable-normalization *readtable*) nil)

相关内容

  • 没有找到相关文章

最新更新