1

我需要创建自己的 concat 函数,并且很困惑如何获得所需的输出。例子:

myconcat(["a", "b", "c"]) 返回 "abc"

([]) 返回 ""

我有这个:

fun myconcat ([],L2) = L2
| myconcat(x::xs, L2) = x::myconcat(xs,L2);

它只返回我的两个字符串的列表。我如何让他们输出我需要的东西?

4

1 回答 1

4

首先,您似乎没有正确的类型。
该示例具有 type string list -> string,您的函数似乎具有 type 'a list * 'a list -> 'a list

要连接两个字符串,您可以使用^,而不是::

前者有类型string * string -> string,后者有类型'a * 'a list -> 'a list。由于字符串不是 SML 中的列表,因此尝试将它们连接起来::会导致类型错误。

要真正做你想做的事,以最简单的方式,尝试

fun myconcat L = foldr (op^) "" L
于 2013-10-15T17:22:42.163 回答