【发布时间】:2014-12-02 17:51:28
【问题描述】:
在 haskell 中,我试图将列表转换为 [(1,2),(3,4),(5,6)] 分成两个列表:[1,3,5] 和 [2,4,6],使用 仅使用递归函数
到目前为止我已经尝试过了,但它不起作用
unpair :: [(a,b)] -> ([a], [b])
unpair [] = []
unpair ((x,y):xs) = x : unpair(xs) y : unpair (xs)
但是,当我只尝试列出元组中的第一个值时,它确实有效:
unpair [] = []
unpair ((x,y):xs) = x : unpair(xs)
知道我做错了什么吗?
【问题讨论】:
-
unpair返回一个pair,而不是一个列表。因此,您的两个示例都是错误的。使用case .. of (x,y) ->或let (x,y)=... in访问一对的组件。
标签: haskell