2013-05-14 71 views
-1

我想實現一個函數,它獲取一個元組列表(大小爲2)併產生一個包含兩個單獨列表的元組。實現解壓縮函數時出錯

我試過代碼:

fun unzip [] = ([],[]) 
    | unzip [(a,b)] = ([a],[b]) 
    | unzip (a,b)::ps = (a::(#1(unzip(ps))),(b::(#2(unzip(ps)))); 

不過,這並不編譯中,SML給我的提示=末

+0

首先,你有不平衡的括號。 – 2013-05-14 16:41:37

回答

1

需要額外)關閉tubple。 需要((a,b)::ps)。不知怎的,SML認爲模式是unzip (a, b),然後處理::不同於描述模式。我仍然不知道SML何時或爲何需要它需要的一些括號,但是在正確的位置添加更多內容似乎可以解決很多錯誤。

您的版本具有語法修復。 (注意,我只修正了語法,我沒有對可能的代碼進行其他改進。)

fun unzip [] = ([],[]) 
    | unzip [(a,b)] = ([a],[b]) 
    | unzip ((a,b)::ps) = (a::(#1(unzip(ps))),(b::(#2(unzip(ps)))))