SML-列表和递归
我在SML中有一个列表,其中包含来自数据类型SML-列表和递归,sml,Sml,我在SML中有一个列表,其中包含来自数据类型“expr”(列表“b”)的成员。 我还有函数“What”,它的参数仅来自dayatype“expr”。 现在我在下一个代码中遇到了问题: datatype expr = K of string| Number2 of expr * (expr list); datatype number = Number1 of string | Number3 of int; What.... | What (Number2 (t,[]))= Number3(0)
“expr”
(列表“b”)的成员。
我还有函数“What”
,它的参数仅来自dayatype“expr”
。
现在我在下一个代码中遇到了问题:
datatype expr = K of string| Number2 of expr * (expr list);
datatype number = Number1 of string | Number3 of int;
What....
| What (Number2 (t,[]))= Number3(0)::What(t)
| What (Number2 (y,(a::b)) = append (What(a), What(b));
发生错误的原因是b是expr
的列表,而函数What
只得到“expr
”而不是“expr list
”。我要做的就是检查所有成员是否为“b”
,并创建一个新列表-哪个成员来自数据类型“number”
。
我尝试使用映射函数
,但没有任何帮助(请参见此处的标记:)
有什么想法吗?还有另一种方法,不用地图?为了解决这个问题,我在上面堆了一天 您在上一个问题中执行的
追加
功能:
fun append (nil, l2) = l2
| append (x::xs, l2) = x::append(xs, l2);
可替换为内置的附加运算符@
。作为:
为了解决问题 您在上一个问题中执行的
追加
功能:
fun append (nil, l2) = l2
| append (x::xs, l2) = x::append(xs, l2);
可替换为内置的附加运算符@
。作为:
考虑到你在另一个问题中得到的答案,你必须解释你所说的“没有帮助”是什么意思。您所期望的正确输出根本不清楚。给出
What
函数的完整定义以及输入和预期输出的示例。还请注意,您可以使用内置函数@
而不是append
函数。那将是lst1@lst2
@Jesper.Reenberg:非常感谢!操作员@解决问题!考虑到你在另一个问题中得到的答案,你必须解释你所说的“没有帮助”是什么意思。您所期望的正确输出根本不清楚。给出What
函数的完整定义以及输入和预期输出的示例。还请注意,您可以使用内置函数@
而不是append
函数。那将是lst1@lst2
@Jesper.Reenberg:非常感谢!操作员@解决问题!