【发布时间】:2011-05-02 18:22:44
【问题描述】:
我想将列表 [[1,2,3],[2,3]] 转换为元组 [(1,2,3),(2,3)]
我的功能:
thr [a,b,c] = (a,b,c)
tupel [] = []
tupel (x:xs) = if length x==3 then thr x:(tupel xs) else (tupel xs)
这与三个元素一起工作。
thr [a,b,c] = (a,b,c)
two [a,b] = (a,b)
tupel [] = []
tupel (x:xs) = if length x==3 then thr x:(tupel xs) else two x:(tupel xs)
为什么不这样做呢?
错误:应用程序中的类型错误 * 表达式:两个 x :tupel2 xs 术语:两个 x 类型:(a,a) * 不匹配:(a,a,a)
【问题讨论】:
-
很确定你需要依赖类型才能让这样的东西真正起作用……
-
依赖类型不是必需的。这只是一个简单的旧代数数据类型问题。
-
@Don 嗯,误读了这个问题。问题是他想要一个异构列表。
-
没错,它们只是带有(显式或隐式)标签的常规列表。