2013-10-15 3 views
1

내 자신의 concat 함수를 만들어야하고 내가 필요한 출력을 얻는 방법을 혼란스럽게합니다. 예 :내 자신의 Concat 함수 (SML)를 만들려면

myconcat ([ "A", "B", "C"는]) I이있는 "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 ' –

관련 문제