首页 > 解决方案 > 如何将元组列表转换为单个列表

问题描述

我正在尝试将元组列表转换为单个列表,其中每个元组中只有第二个值。

targets :: [(a,b)] -> [a]
targets (x:xs) = [snd(x)] ++ targets xs

这是我到目前为止所拥有的,但它不起作用。任何帮助将不胜感激。

标签: listhaskelltuples

解决方案


这是一个映射,对于每个 2 元组,您获取第二个元素,因此我们可以使用map :: (a -> b) -> [a] -> [b]

targets :: [(a,b)] -> [b]
targets = map snd

请注意,返回类型是[b]:s 的列表b,而不是as。但是,您的 a 类型Graph具有 type [(Node a, [Int])],因此您需要将这些列表连接在一起。


推荐阅读