简体   繁体   中英

Scheme - How to use “.” as a symbol

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?

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

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))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM