我正在尝试重新解压缩,这是我到目前为止所遇到的,然后才遇到障碍。
fun myUnZip [] = []
| myUnZip ((x1,x2)::tail) = (* x1 :: myUnZip tail and also do x2 :: tail *)
现在,我知道第二行是不可能的,所以这就是为什么我把评论放在那里以显示我打算做什么。
关于我如何正确地做这件事的任何帮助?
这是我用这种语言的第二天,我只是想学习模式匹配。我目前正在阅读Elementary Standard ML这本书,它有点涵盖了从列表中解压缩元组的主题。虽然这本书为我提供了一个解决方案,但我有点不知所措,并希望其他人可能有不同的解决方案,或者可能对本书的解压缩解决方案提供一些评论。
答案 0 :(得分:5)
fun unzip [] = ([], [])
| unzip ((x,y)::xys) =
let val (xs,ys) = unzip xys in (x::xs,y::ys) end;