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

Functional programming 创建我自己的Concat函数(SML),functional-programming,sml,smlnj,Functional Programming,Sml,Smlnj,我需要创建自己的concat函数,但我对如何获得所需的输出感到困惑。例如: myconcat([“a”、“b”、“c”])返回“abc” ([])返回“” 我有这个: fun myconcat ([],L2) = L2 | myconcat(x::xs, L2) = x::myconcat(xs,L2); 它只返回两个字符串的列表。如何让他们输出我需要的内容?首先,您似乎没有正确的类型。 该示例的类型为stringlist->string,其中您的函数的类型似乎为'a list*'a list

我需要创建自己的concat函数,但我对如何获得所需的输出感到困惑。例如:

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

([])返回“”

我有这个:

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

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

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

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

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

要真正做你想做的事,用最简单的方式,试试看

fun myconcat L = foldr (op^) "" L

首先,您的类型似乎不正确。
该示例的类型为
stringlist->string
,其中您的函数的类型似乎为
'a list*'a list->'a list

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

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

要真正做你想做的事,用最简单的方式,试试看

fun myconcat L = foldr (op^) "" L

要扩展它,
fun myconcat L=foldr(fn(s1,result)=>s1^result)”“L
要扩展它,
fun myconcat L=foldr(fn(s1,result)=>s1^result)”“L