如何重新创建解压缩

时间:2013-04-08 02:59:26

标签: sml

我正在尝试重新解压缩,这是我到目前为止所遇到的,然后才遇到障碍。

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

现在,我知道第二行是不可能的,所以这就是为什么我把评论放在那里以显示我打算做什么。
关于我如何正确地做这件事的任何帮助?

这是我用这种语言的第二天,我只是想学习模式匹配。我目前正在阅读Elementary Standard ML这本书,它有点涵盖了从列表中解压缩元组的主题。虽然这本书为我提供了一个解决方案,但我有点不知所措,并希望其他人可能有不同的解决方案,或者可能对本书的解压缩解决方案提供一些评论。

1 个答案:

答案 0 :(得分:5)

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