0

假设我们有上面的代码:

(require-extension defstruct)

(defstruct tree height age leaf-color)

(define coconut
  (make-tree height:30
             age: 5
             leaf-color: 'green))

我知道我可以使用(树高椰子)来查看椰子的高度,但是一个命令中的所有椰子信息怎么样?我还尝试了 (tree->alist 椰子) 产生: ((height . 30) (age . 5) (leaf-color . 'green)) 但我不能使用类似的东西:(for-each pp 椰子)。是否可以这样做,或者用适当的命令编写我的打印树是唯一的解决方案?

4

1 回答 1

1

所以这不是一个通用的解决方案,因为它使用特定的tree->alist程序。此外,输出不是特别漂亮。正如我在评论中提到的,如果您有非常具体的打印需求,您应该研究一下format鸡蛋。

(use defstruct)

(defstruct tree height age leaf-color)

(define coconut (make-tree height: 30 age: 5 leaf-color: 'green))

(define (pp-tree t)
  (let loop ((attr (tree->alist t)))
    (cond ((null? attr) 'done)
          (else
            (display (caar attr))(display ": ")
            (display (cdar attr))(newline)
            (loop (cdr attr))))))
于 2012-05-06T02:07:52.653 回答