Lisp 高级字符串比较

Lisp 高级字符串比较,lisp,common-lisp,Lisp,Common Lisp,我最近在一些常见的LISP库代码中遇到了这一行: (string-equal #1="http://" url :end2 (min (length url) #2=#.(length #1#))) 此处,url作为字符串变量传入。我理解此比较的目的是确定url字符串是否以http://开头,并且它是不区分大小写的比较。我还了解string equal键,例如:start和:end。但是英镑符号(#)的东西让我很吃惊。我可以根据上下文理解其中的大部分内容,但我还没有找到关于它如何工作的文档,我

我最近在一些常见的LISP库代码中遇到了这一行:

(string-equal #1="http://" url :end2 (min (length url) #2=#.(length #1#)))
此处,
url
作为字符串变量传入。我理解此比较的目的是确定
url
字符串是否以
http://
开头,并且它是不区分大小写的比较。我还了解
string equal
键,例如
:start
:end
。但是英镑符号(
#
)的东西让我很吃惊。我可以根据上下文理解其中的大部分内容,但我还没有找到关于它如何工作的文档,我仍然对
#2=#(length#1#)的真正含义有点困惑。我觉得它有点神秘

有人能解释一下英镑符号机制是如何在这种特定环境下工作的,以及它是否以同样的方式在其他结构中普遍可用吗?或者给我指一个描述它的文档/网站

谢谢大家!

磅(或尖)符号的功能在Hyperspec中描述

#1=
表示法采用以下形式(此处为字符串
“http://”
),带有一个数字索引,供以后使用
#1
表示法<代码>#。
导致生成以下表单

总体效果是使代码编写为:

(string-equal "http://" url :end2 (min (length url) 7))

谢谢,肖恩。为什么程序员也会有
#2=
?我想在这种情况下这是多余的,我觉得也是多余的。