创建我自己的Concat函数(SML)

时间:2013-10-15 17:16:28

标签: functional-programming sml smlnj

我需要创建自己的concat函数,我很困惑如何得到我需要的输出。示例:

  

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

     

([])返回“”

我有这个:

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

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

1 个答案:

答案 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