方案 - 如何使用“。”作为一种象征

时间:2012-04-03 03:19:49

标签: scheme

我想做类似的事情:

(car '(. a))

并获取

.

结果。

例如,如果您键入

'.

进入控制台,您将获得我想要的输出。问题是我不希望所有的撇号都在前面。在列表中。

任何指导?

2 个答案:

答案 0 :(得分:7)

在Scheme的读取语法中,独立点是特殊的。 '.不会给你一个点符号;这是无效的语法。 (如果它在您的实现中有效,那么这只是您实现的一个特殊怪癖。)

相反,你必须逃脱它。在大多数Scheme实施中,您可以使用'|.|'\.

(car '(\. a))   ; returns the same thing as (string->symbol ".")
(car '(|.| a))  ; likewise

答案 1 :(得分:3)

编辑:这似乎仅适用于麻省理工学院/ GNU计划。

'创建符号和列表文字。如果您希望将.作为符号,则为'.

如果a是符号文字,则可以使用

(car '(. a))

(car (list '. 'a))

如果a是变量,请尝试

(car `(. ,a))

(car (list '. a))