2015-11-14 7 views
1

У меня есть следующие программы в Ракетка с языком, установленным на «определить из источника» и синтаксис вывода установлен на «написать»:Ракетка - превращает символы в котировальный список в нижний регистр автоматически

#lang r5rs 
(define g '((w C C) (x A C) (y A B) (z B C))) 

Когда я запускаю его и введите в интерактивном режиме

> g 

Я получаю

{{w c c} {x a c} {y a b} {z b c}} 

Однако, когда я печатаю список прямо к подсказке я получаю

> '((w C C) (x A C) (y A B) (z B C)) 
{{w C C} {x A C} {y A B} {z B C}} 

Как я могу помешать Racket превратить символы в строчные буквы?

+2

Вы можете использовать '(определить г #cs' ((ш CC) (х AC) (у AB) (z BC))) '(помните префикс' # cs', который заставляет чувствительность к регистру), но это своего рода хакки и там * должно быть лучшим решением. – uselpa

+1

r5rs не Racket, это стандарт схемы. Для Racket вам нужно будет ввести '#lang racket' в« DrRacket », который является IDE, поддерживающим несколько языков. – AleArk

+0

Да, я имел в виду, что я использую R5RS в DrRacket. – alexraasch

ответ

3

Стандарт R5RS требует, чтобы считыватель передавал символы без чувствительности к регистру. Большинство реализаций R5RS преобразуют символы с символами верхнего регистра в нижний регистр. Если вам нужно создать символ с буквами верхнего регистра, вам нужно использовать string->symbol.

> (string->symbol "Hello") 
Hello 

Поскольку многие реализации схемы поддерживают чувствительность к регистру, более поздние стандарты изменили значение по умолчанию на чувствительность к регистру.

Смотрите вопрос (первая!) В схеме FAQ для более длительного объяснения:

http://community.schemewiki.org/?scheme-faq-language

 Смежные вопросы

  • Нет связанных вопросов^_^