2013-04-08 44 views
1

我試圖重新創建解壓縮,這是我到目前爲止,打到路障前。如何重新創建解壓縮

fun myUnZip [] = [] 
    | myUnZip ((x1,x2)::tail) = (* x1 :: myUnZip tail and also do x2 :: tail *) 

現在,我知道,第二行是不可能的,所以這就是爲什麼我把意見那裏展示我打算做的。
任何幫助我如何正確地做到這一點?

這是我在這門語言的第二天,我只是想學習模式匹配。我目前正在閱讀Elementary Standard ML這本書,它涵蓋了從列表中解壓縮元組的主題。雖然這本書爲我提供了一個解決方案,但我對它有點不知所措,希望也許別人有不同的解決方案,或者可能會提供一些關於本書解壓縮解決方案的評論。

+0

本書的解決方案是什麼?再用幾天的語言,你會發現解壓縮變成了一個明顯的一/二行,所以這個例子不應該太難遵循。 – 2013-04-08 13:18:17

回答

5
fun unzip [] = ([], []) 
    | unzip ((x,y)::xys) = 
     let val (xs,ys) = unzip xys in (x::xs,y::ys) end; 
+0

真的很整潔的解決方案,你在哪裏看到這個? – theStig 2013-04-08 03:37:01

相關問題