这个图能说明R5RS Scheme原始数据类型之间的关系吗?

时间:2013-12-29 10:11:45

标签: types scheme

我试图绘制一个图表来描述R5RS Scheme原始数据类型之间的关系,这样我就可以

  • a)当我试图排除一些特殊情况时提醒自己。
  • b)与他人分享,如果他们感兴趣的话。

但是我不确定是否存在任何误解/非标准用语,或者是否有更好的在线图表来说明相同的想法......

r5rs scheme datatypes

感谢您的帮助。


在接受了@ChrisJester-Young的建议之后,我重新绘制了图表,希望这次我接近它。 :)

r5rs scheme datatypes(rev1)


修订版2

r5rs scheme datatypes(rev2)

1 个答案:

答案 0 :(得分:2)

如果您使用外部表示而不是代码段,我认为这不会令人困惑。然后你可以取消所有引用。

基本上,虚线对的外部表示为(foo . bar),其中foo位于车位中,bar位于该对的cdr插槽中。

最重要的是,你有列表。列表有三种:正确,不正确和循环。

正确的清单是:

  • 空列表或列表结尾特殊对象()
  • 将cdr插槽设置为另一个正确列表的虚线对。

示例:(1 2 3 4)(与(1 2 3 4 . ())相同)

不正确的清单是:

  • 既不是虚线对也不是空列表()对象或
  • 的对象
  • 将cdr插槽设置为另一个不正确列表的虚线对。

示例:(1 2 3 . 4)

循环列表是:

  • 一个虚线对,当追逐连续的cdrs时,你永远不会到达一个非虚线对象。

示例:#0=(1 2 3 4 . #0#)(1 2 . #1=(3 4 . #1#))