我试过各种组合的缺点和附加产品'(5 )。(5)但我做不到。有什么办法吗?
发布于 2015-11-30 19:52:36
听起来像比尔·克林顿( Bill ),这取决于你所说的“生产”是什么意思。
如果您的意思是“生成一个在屏幕上打印为'(5 . (5))
的值,那么您就不走运了,因为这个值打印为'(5 5)
。
对于类似的例子:如何生成数字1e-1
?那么,试着键入它;这是相同的0.1,如果您键入1e-1,它将打印为0.1。
但是,您可以评估
#lang racket
(= 0.1 1e-1)
..。你会发现他们是同一个号码。
以同样的方式,尝试评估
#lang racket
(equal? '(5 . (5)) (list 5 5))
你会发现这是两种书写相同价值的方法。
发布于 2015-11-30 10:57:34
没有一种便携的方法不恰当地打印适当的列表。最简单的方法就是自己写打印机。一个非常简单的例子如下所示:
(define (write-dot obj . maybe-port)
(define out (if (null? maybe-port) (current-output-port) (car maybe-port)))
(cond ((pair? obj)
(display "(" out)
(write-dot (car obj) out)
(let loop ((obj (cdr obj)))
(display " " out)
(cond ((null? obj))
((and (pair? obj) (null? (cdr obj)))
(display ". " out)
(write obj out))
((pair? obj) (write-dot (car obj)) (loop (cdr obj)))
(else (write obj)))
(display ")" out)))
(else (write obj out))))
https://stackoverflow.com/questions/33991926
复制相似问题