Scheme如何打印没有括号的列表?

时间:2015-08-25 19:52:59

标签: scheme

我是Scheme中的新用户。我只是想知道如何打印没有括号的列表。

示例:

  

(定义mylist'(a b c d f g))

     

(显示mylist)

     

(a b c d f g)

我想以下列格式打印出来:

  

a b c d f g

1 个答案:

答案 0 :(得分:0)

打印值的唯一方法是使用display之类的打印过程。因此:

(display 'a)       ; ==> <unspecified>, prints the string "a" to the screen
(display '(a b c)) ; ==> <unspecified>, prints the string "(a b c)" to the screen

考虑到这一点,您可以通过打印列表来打印列表:

(define (display-list lst)
  (let loop ((lst lst))
    (when (pair? lst)
      (display (car lst))
      (display " ")
      (loop (cdr lst))))
  (newline))

或者我们可以使用更高阶的程序:

(define (display-list lst)
  (for-each (lambda (what)
              (display what)
              (display " "))
            lst)
  (newline))

它们的工作方式与显示类似。他们打印列表并评估与newline相同的返回值,这是一个未指定的实现相关值。在大多数实现中,它是一个永远不会打印的值。

(define mylist '(a b c d f g))
(display-list mylist) ; ==> <unspecified>, prints "a b c d f g \n" to the screen

请记住,这只会省略外部列表的括号,因此:

(display-list '((a) (b))) ; ==> <unspecified>, prints "(a) (b) \n" to the screen