Formatting 打印原始控制字符,同时在输出(Racket)中保留字符串分隔符

Formatting 打印原始控制字符,同时在输出(Racket)中保留字符串分隔符,formatting,scheme,racket,double-quotes,quotation-marks,Formatting,Scheme,Racket,Double Quotes,Quotation Marks,我的球拍里有一张这样的清单: '(some-symbol "some\ntext\ngoes in\nhere") 我想将其打印出来,以便像\n这样的控制字符被转换为它们的实际值,在本例中是换行符。但是,我还希望字符串的引号(即分隔符)保留在输出a lawrite或print中。display功能已经完成了我想要的第一部分,但是它去掉了没有转义的引号,如\“。例如: racket@> (displayln '(some-symbol "some\ntext\ngoes in\nher

我的球拍里有一张这样的清单:

'(some-symbol
  "some\ntext\ngoes in\nhere")
我想将其打印出来,以便像
\n
这样的控制字符被转换为它们的实际值,在本例中是换行符。但是,我还希望字符串的引号(即分隔符)保留在输出a la
write
print
中。
display
功能已经完成了我想要的第一部分,但是它去掉了没有转义的引号,如
\“
。例如:

racket@> (displayln '(some-symbol "some\ntext\ngoes in\nhere")) ;; I want the linefeeds as produced here
(some-symbol some
text
goes in
here)
racket@> (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")
racket@> 

有没有办法在Racket中获得这种输出效果,而不转义字符串分隔符,如
\“
?另外,我不想在输出中使用列表前面的
字符。

不清楚您到底想要什么,所以让我们在那里放一个稻草人,让您四处乱闯:

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

不是你想要的吗?

这正是我想要的;非常感谢。对不起,我的问题不是很清楚。