我正在测试以下代码:
datatype my_int_list = Empty
| Cons of int * my_int_list
fun append (xs, ys) =
case xs of
Empty => ys
| Cons(x, xs') => Cons(x, append(xs', ys))
如果我创建一个元素或两个元素的列表,一切正常。如果我创建三个元素的列表,它会引入#
符号。
- Cons(1, Empty);
val it = Cons (1,Empty) : my_int_list
- Cons(1, Cons(2, Empty));
val it = Cons (1,Cons (2,Empty)) : my_int_list
- Cons(1, Cons(2, Cons(3, Empty)));
val it = Cons (1,Cons (2,Cons #)) : my_int_list
当我尝试使用append
函数时会发生这种情况:
- val l1 = Cons(1, Cons(2, Cons(3, Empty)));
val l1 = Cons (1,Cons (2,Cons #)) : my_int_list
- val l2 = Cons(4, Cons(5, Cons(6, Empty)));
val l2 = Cons (4,Cons (5,Cons #)) : my_int_list
- append(l1, l2);
val it = Cons (1,Cons (2,Cons #)) : my_int_list
这只是SML
方式告诉我有更多的元素,但它不打算打印它们吗?如果是这样,我可以要求它打印一切吗?如果没有,我做错了吗?