1
我有SML中的列表,它包含来自数据类型"expr"
(列表“b”)的成员。 我也有功能"What"
,它的参数只是从日常类型"expr"
。 现在我在接下来的代码问题:发生SML - 列表和递归
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"
。 我试图使用map function
,但它没有帮助(请参阅此处的标记:SML - unbound variable or constructor)。
有什么想法?还有另一种方法可以做到,而不使用地图?我堆上了一天..
你必须解释一下你所说的“没有帮助”,给你的其他问题得到了解决是什么意思。你所期望的正确输出并不完全清楚。给出“What”函数的完整定义以及输入和期望输出的示例。 –
另请注意,不是使用'append'函数,而是使用内建函数'@'。那将是'lst1 @ lst2'。 –
@ Jesper.Reenberg:非常感谢!运营商@解决问题! –