给定元组列表,
[(1,2),(3,4),(5,6)]我需要把它解压成这样
[[1,3,5],[2,4,6]]解压需要是('a * 'a) list -> 'a list list类型。
到目前为止,我把这个作为我的解压缩函数,但是我的输入是错误的,我不确定如何访问pass through ('a * 'a)。
val rec last =
fn (h::nil) => h
|(h::list) => last (list)
| (nil) => raise Empty;
fun unzip [] = []
| unzip L = [(map hd L), (map last L)]; 这将返回'a list list -> 'a list list
发布于 2018-02-22 13:31:50
您得到了一个元组列表
[(1,2),(3,4),(5,6)]我们想创建一个函数来将它们重新组织到
[[1,3,5],[2,4,6]]我们知道输出应该是这样的:
[ [tuple heads], [tuple tails] ]我们知道映射给我们的输出是list,这就是我们要寻找的数据类型。
因此,
fun unzip L = [ (map f1 L), (map f2 L) ]我认识到这是一个家庭作业问题,所以我将把它留在那里,让您考虑适用于map的函数。考虑一下元组的行为,以及如何操作元组中的数据。请记住,f1和f2应该是不同的,因为它们处理的是不同的东西。
冲啊Cougs!
发布于 2018-02-26 16:05:33
您还可以通过以下方式使用foldr进行unzip:
val unzip = foldr (fn ((x,y), (xs, ys)) = (x::xs, y::ys)) ([], [])https://stackoverflow.com/questions/48916252
复制相似问题