2013-10-15 37 views
1

我需要创建自己的concat函数,并且很困惑我如何得到我需要的输出。例如:创建我自己的Concat函数(SML)

myconcat([ “一”, “B”, “C”])返回 “ABC”

([])返回 “”

我有这样的:

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

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

回答

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 
+0

要就此展开什么,'好玩myconcat L = foldr相似(FN(S1,结果)=> S1 ^结果) “” L ' –