SML包含数据类型列表

问题描述 投票:0回答:2

如果我有此SML数据类型

datatype json =
         Num of real
       | String of string
       | False
       | True
       | Null
       | Array of json list
       | Object of (string * json) list

假设我只有一个Array拥有这个Object,这使它成为json列表

Array[Object[("a", Num (1.0)),("b", True)]]

如何将新的Object限制在现有的Array上?我尝试了一个简单的::,但无济于事

Object[("a", Num (1.0)),("b", True)]::Array[Object[("a", Num (2.0)),("b", True)]]

这会产生错误。我是否需要为此建立自己的缺点?似乎SML列表是'a list,应该允许json list并与::一起使用>

是的,这是我自己在华盛顿大学上的编程语言

上学期的作业。 This是分配。

我的基本问题是我不知道如何通过递归调用将其添加到Array中。如果我需要生成一个包含ArrayObjects并在每次递归调用时都在该Object的开头添加一个新的Array,该怎么办?我见过SuccCons的示例,例如后继构造函数,但这些示例仅创建了一个递归的嵌套对象,例如

val four = Succ (Succ (Succ (Succ Zero)))

...但是这没有帮助...

如果我有此SML数据类型数据类型json =实数|字串|错误|是的空| json列表数组| (string * json)...

list sml abstract-data-type
2个回答
1
投票

Array [...]不是json list,它是json,并且::不能将两个json限制在列表中。


0
投票

[在molbdnilo的帮助下,我摆脱了如何创建Array列表的思维障碍。由于Array也是一个构造函数,即像函数一样,我们可以在此构造函数调用内执行操作,即可以执行常规列表cons [[inside

© www.soinside.com 2019 - 2024. All rights reserved.