Scheme 使用语法将列表列表转换为字符串列表->;一串

Scheme 使用语法将列表列表转换为字符串列表->;一串,scheme,racket,Scheme,Racket,基本上,我想要((whatever1)(whatever2)(whatever3)…)==>(“(whatever1)”“(whatever2)”“(whatever3)”),这只是在列表之外添加引号,并保持列表中的内容不变。e、 g '((define X ::int) (define b0 :: bool (=> T (and (= X X) (= 0 0))))) 将变成: '("(define X ::int)" "(define b0 :: bool (=> T (a

基本上,我想要
((whatever1)(whatever2)(whatever3)…)
==>
(“(whatever1)”“(whatever2)”“(whatever3)”)
,这只是在列表之外添加引号,并保持列表中的内容不变。e、 g

'((define X ::int)
 (define b0 :: bool (=> T (and (= X X) (= 0 0)))))
将变成:

'("(define X ::int)"
 "(define b0 :: bool (=> T (and (= X X) (= 0 0))))")
但是,我使用的以下代码消除了所有空格

#lang racket
(require syntax/to-string)
(define lst-sub '((define x :: int) (=> T (and (= X X) (= 0 0)))))
(pretty-write (map (λ (x) (string-append "(" (syntax->string (datum->syntax #f x)) ")")) lst-sub))  
返回

("(definex::int)" "(=>T(and(=XX)(=00)))")
所以问题是:没有空间了! 我怎样才能避开这个

好的。我不走我认为“简单”的路线。并得出如下结果,最终得到更多的代码行:(

好吧。我不走我想的“简单”路线。我的计算结果如下,最后有更多的代码行:(


哦,我的天!两行!完全错过了格式(在Racket中没有太多使用它:(…多么好的一课!两种方式:)哦,我的天!两行!完全错过了格式(在Racket中没有太多使用它:(…多么好的一课!两种方式:)
(define (toString-with-space data)
  (match data
    [(? symbol?) (string-append (symbol->string data) " ")]
    [(? number?) (string-append (number->string data) " ")]))


(define (flat-def def-lst)
  (if  (empty? def-lst)
      (list)
      (begin
        (let ([f (car def-lst)])
          (if (not (list? f))
              (cons (toString-with-space f) (flat-def (drop def-lst 1)))
              (append (list "(") (flat-def f) (flat-def (drop def-lst 1)) (list ")"))))))) 

(define (lstStr->lstChars lst-str)
  (for/fold ([l empty])
     ([el (in-list lst-str)])
     (append  l (string->list el))))


(define flat (flat-def ' (define b1 :: bool (=> (and (= X x) (= Y y)) (and (= Y y) (= X x))))))
(set! flat (append  (list "\"" "(") flat (list  ")" "\""))) 
(set! flat (lstStr->lstChars flat))
(set! flat (list->string flat))
(display flat)
#lang racket
(define lst-sub '((define x :: int) (=> T (and (= X X) (= 0 0)))))
(pretty-write (map (λ (x) (format "~s" x)) lst-sub))