我在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)::What(t)
| What (Number2 (y,(a::b)) = append (What(a), What(b));
Run Code Online (Sandbox Code Playgroud)
发生错误是因为b是列表expr,并且函数What只得到" expr"而不是" expr list".我想要做的就是检查所有成员是什么"b",并创建一个新列表 - 哪个成员来自数据类型"number".我尝试使用map function,但它没有帮助(请参阅此处的标记:SML - 未绑定的变量或构造函数).
任何的想法?有另一种方法可以做到这一点,而不使用地图?我堆叠了一天..
为了让问题结束.
append您在上一个问题中所做的功能:
fun append (nil, l2) = l2
| append (x::xs, l2) = x::append(xs, l2);
Run Code Online (Sandbox Code Playgroud)
可以用内置追加运算符替换@.正如文档所述:
Run Code Online (Sandbox Code Playgroud)l1 @ l2 returns the list that is the concatenation of l1 and l2.
| 归档时间: |
|
| 查看次数: |
6992 次 |
| 最近记录: |