Functional programming 创建我自己的Concat函数(SML)
我需要创建自己的concat函数,但我对如何获得所需的输出感到困惑。例如: myconcat([“a”、“b”、“c”])返回“abc” ([])返回“” 我有这个: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
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