我是Scheme中的新用户。我只是想知道如何打印没有括号的列表。
示例:
(定义mylist'(a b c d f g))
(显示mylist)
(a b c d f g)
我想以下列格式打印出来:
a b c d f g
答案 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