2016-11-07 8 views
1

У меня есть список в Ракетка так:печати сырым управляющие символы при сохранении разделителей строк на выходе (ракетки)

'(some-symbol 
    "some\ntext\ngoes in\nhere") 

Я хочу напечатать его таким образом, что управляющие символы, такие как \n переводятся в их фактических значений , в этом случае строка возвращает. Тем не менее, я также хочу, чтобы кавычки строки (т. Е. Разделители) сохранялись на выходе a la write или print. Функция display уже выполняет первую часть того, что я хочу, но она удаляет кавычки, которые не сбрасываются, как \". Например .:

[email protected]> (displayln '(some-symbol "some\ntext\ngoes in\nhere")) ;; I want the linefeeds as produced here 
(some-symbol some 
text 
goes in 
here) 
[email protected]> (println '(some-symbol "some\ntext\ngoes in\nhere")) ;; But I also want the quotation marks as preserved here 
'(some-symbol "some\ntext\ngoes in\nhere") 
[email protected]> 

Есть ли какой-нибудь способ, чтобы получить этот вид выходного эффекта в Ракетка без побега строки разделителей как \"? Кроме того, мне не нужен символ ', который предшествует списку, на выходе.

ответ

1

Это не совсем ясно, что вы хотите, так давайте соломенный человек там для вас, чтобы колотить вокруг:

#lang racket 

(require rackunit) 

;; find every string in an s-expression, add quotes to it: 
(define (add-quotes s) 
    (cond [(list? s) 
     (map add-quotes s)] 
     [(string? s) 
     (string-append "\"" s "\"")] 
     [else s])) 

(check-equal? (add-quotes '((a b "cde") (("g") f))) 
       '((a b "\"cde\"") (("\"g\"") f))) 

;; display s with quotes around strings: 
(define (funny-display s) 
    (display (add-quotes s))) 

Не то, что вы хотели?

+0

Это делает то, что я хочу; Спасибо. Извините, если мой вопрос был не очень ясен. – GDP2

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

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