怎么做对的列表?

时间:2017-10-14 16:31:20

标签: haskell

所以我想做一个接收对列表并给出该对的第一个元素的函数,问题是我只知道如果它只有1对就如何编写对列表

primeiros :: [(a,b)] -> [a] 
primeiros (a,b) = undefined

但问题是我不知道怎么写如果超过1对,我试过这个:

primeiros [(a,b),(as,bs)] = undefined

但是这显然不会起作用,因为如果列表有2对,它只会做一些事情,我想要一些适用于任何对的东西。

2 个答案:

答案 0 :(得分:2)

您创建一个包含第一个元素的列表,如下所示:

primeiros :: [(a,b)] -> [a]
primeiros (x:xs) = [fst x] ++ primeiros xs

fst会返回一对中的第一个元素,您也可以使用map

primeiros :: [(a,b)] -> [a]
primerios = map fst

答案 1 :(得分:0)

您可以像这样创建一对:

Prelude> (42, "Foo")
(42,"Foo")

这是一对,其中第一个元素是数字,第二个元素是String

该对是两个值,但您也可以将其视为单个值。

列表

编写值列表的一种方法是这样的:

Prelude> [1,5,2,7,1337]
[1,5,2,7,1337]

这是五个数字的列表。

编写相同列表的另一种方法是这样的:

Prelude> 1:5:2:7:1337:[]
[1,5,2,7,1337]

现在您已经知道如何将一对编写为单个元素,以及如何编写元素列表,我相信您可以弄清楚如何编写对列表。