Scheme - How to use “.” as a symbol

2019-07-20 22:43发布

I want to do something like:

(car '(. a))

and get

.

as a result.

For example, if you type

'.

into the console you will get the output that I want. The problem is that I don't want to have an apostrophe infront of all of the . in a list.

Any guidance?

标签: scheme
2条回答
Explosion°爆炸
2楼-- · 2019-07-20 23:21

EDIT: This appears to only work in MIT/GNU Scheme.

' creates symbol and list literals. If you want . as a symbol, it's '..

If a is a symbol literal, you can use

(car '(. a))

or

(car (list '. 'a))

If a is a variable, try

(car `(. ,a))

or

(car (list '. a))
查看更多
地球回转人心会变
3楼-- · 2019-07-20 23:32

In Scheme's read syntax, a standalone dot is special. '. won't get you a dot symbol; it's invalid syntax. (If it works in your implementation, then that's just a special quirk of your implementation.)

Instead, you have to escape it. In most Scheme implementations, you can either use '|.| or '\..

(car '(\. a))   ; returns the same thing as (string->symbol ".")
(car '(|.| a))  ; likewise
查看更多
登录 后发表回答