我需要创建自己的 concat 函数,并且很困惑如何获得所需的输出。例子:
myconcat(["a", "b", "c"]) 返回 "abc"
([]) 返回 ""
我有这个:
fun myconcat ([],L2) = L2
| myconcat(x::xs, L2) = x::myconcat(xs,L2);
它只返回我的两个字符串的列表。我如何让他们输出我需要的东西?
我需要创建自己的 concat 函数,并且很困惑如何获得所需的输出。例子:
myconcat(["a", "b", "c"]) 返回 "abc"
([]) 返回 ""
我有这个:
fun myconcat ([],L2) = L2
| myconcat(x::xs, L2) = x::myconcat(xs,L2);
它只返回我的两个字符串的列表。我如何让他们输出我需要的东西?
首先,您似乎没有正确的类型。
该示例具有 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