我在读取球拍博士的输出时遇到问题。默认情况下,它使用 mcons 显示列表。例如,sicp 练习 2.32 生成:
> (subsets (list 1 2 3))
(mcons
(mcons
'()
(mcons
(mcons 3 '())
(mcons
(mcons 2 '())
(mcons
(mcons 2 (mcons 3 '()))
(mcons
(mcons 1 '())
(mcons
(mcons 1 (mcons 3 '()))
(mcons
(mcons 1 (mcons 2 '()))
(mcons (mcons 1 (mcons 2 (mcons 3 '()))) '()))))))))
'())
我读这个有困难。有没有办法让输出看起来像:
(() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3))
Thanks!
你知道你在你的网站中使用什么语言吗?#lang
线?下面的其余说明假设您正在使用#lang
line.
如果你在#lang r5rs
你呢display
or write
值,您应该看到您期望的输出。
> (define p (list 1 2))
> (display p)
(1 2)
> (set-car! p 'one)
> (display p)
(one 2)
如果您只是在交互中输入裸露的值,DrRacket 将会print
他们,并且使用您所看到的表示。在 DrRacket 中,您可以定制价值观的方式print
。这是该过程的逐步说明:
前往Language菜单,然后选择选择语言。您应该会看到弹出的语言对话框。
如果左下角的按钮显示显示详细资料,单击它,对话框窗口应展开以包含自定义项。
寻找输出方式选项。应该有四种选择:构造函数, 准报价, write, and print。选择write样式,然后按Ok确认定制。
一旦你这样做了,那么:
> (display (list 1 2))
(1 2)
> (write (list 1 2))
(1 2)
> (list 1 2)
{1 2}
使用大括号,它的打印结果仍然与您预期的略有不同,因为它试图表明列表结构是可变的。
如果这让您烦恼,我们可以解决这个问题。在程序顶部附近添加以下行(但在#lang
line).
(#%require r5rs/init)
该行引入了一个特定于 Racket 的模块,称为r5rs/init试图提高 r5rs 合规性;特别是,对于可变对,大括号最终应该打印为圆形。
> (display (list 1 2))
(1 2)
> (write (list 1 2))
(1 2)
> (list 1 2)
(1 2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)