我需要创建自己的concat函数,我很困惑如何得到我需要的输出。示例:
myconcat([“a”,“b”,“c”])返回“abc”
([])返回“”
我有这个:
fun myconcat ([],L2) = L2
| myconcat(x::xs, L2) = x::myconcat(xs,L2);
只返回我的两个字符串的列表。我如何让他们输出我需要的东西?
答案 0 :(得分:4)
首先,您似乎没有正确的类型。
该示例的类型为string list -> string
,其中您的函数似乎具有类型'a list * 'a list -> 'a list
。
要连接两个字符串,您可以使用^
,而不是::
。
前者的类型为string * string -> string
,后者的类型为'a * 'a list -> 'a list
。由于字符串不是SML中的列表,因此尝试将它们与::
连接将导致
类型错误。
要以最简单的方式实际执行您想要的操作,请尝试
fun myconcat L = foldr (op^) "" L