2013-10-15 35 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 ' –