我想在Racket中为量子态定义一个变量,按惯例写成:
Reader reference告诉我这是不可能的,因为:
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency>
开始将字符的子序列逐字地包含在分隔的序列中
但是,我很惊讶地发现页面"Special characters" in Rosetta Code,在#34; Racket&#34;部分中,提及:
竖条可用作其周围使用的标识符引用
这是一个糟糕的表述还是Racket中的变量名实际上是否会以某种方式使用竖线?有人可以举个例子吗?
提前致谢。
答案 0 :(得分:4)
垂直条是一种避免语言阅读器对其中字符进行常规解释的方法。因此,它可用于定义其中包含特殊字符的符号,例如:
(define |(| 5)
(+ |(| 1) ; produces 6
您始终可以使用反引号在符号中插入竖线(请参阅manual),例如,您可以编写符号\|0>
,这将在内部解释为{{1} }。但是在源文件中,您必须始终使用|0>
而不是\|0>
。或者,为了避免这种情况,您可以使用extension更改标准阅读器。
但我认为在“标准”球拍中使用带有|0>
的垂直条的符号没有简单的方法,因为垂直条由其读者以特殊方式处理。
答案 1 :(得分:1)
您可以使用|
[u + 01c0]或ǀ
[u + 05c0]或׀
[u +]而不是∣
[u + 007C] 2223]或❘
[u + 2758]。
答案 2 :(得分:0)
有趣的是,我也不知道。通过一些快速实验,这是我在定义一些变量然后在DrRacket的REPL中调用它们时发现的:
(define a|| 3)
(define |b| 2)
(define ||c 5)
(define ||||d 7)
(define f|d| 9)
> a||
3
> a
3
> |b|
2
> d
7
> |d|
7
> f||d
9
> fd
9
(define |e 8)
或(define |e|| 1)
例如,您收到错误消息:
模块语言:模块文本无效。 。读:不平衡`|&#39;
如果你想做
(define ||||d 5)
(define |d| 9)
您也会收到错误:
模块:标识符的重复定义:d
所以你只需要使用偶数|
,所有其他字符必须不一样,你就可以了。