在Haskell中列出操作

时间:2016-04-05 14:23:20

标签: list haskell

我有([(Double,Double)],[(Double,Double)])类型的列表。 example list = ([(1.0,1.0), (2.0,1.0), (1.0,1.0), (1.0,3.0)],[(1.0,4.0), (1.0,5.0), (1.0,1.0), (1.0,2.0), (1.0,3.0), (1.0,4.0), (1.0,5.0)])

如何在第四个元组(1.0,3.0)之后访问所有数据。我已经尝试过尾部功能,但似乎没有用。感谢。

2 个答案:

答案 0 :(得分:4)

嗯,首先,你的列表不是一个列表,而是一个元组:)

type MyData = (MyList, MyList)
type MyList = [MyListElem]
type MyListElem = (Double, Double)

现在,访问第二个列表只是snd

snd :: (a,b) -> b

所以在你的情况下:

snd :: MyData -> MyList

或者,使用Lens,您可以直接使用镜头:

list ^. _2

答案 1 :(得分:1)

这不是一个列表,而是一个列表元组。事实上,元组列表的元组。

要获取元组的第二部分,请使用snd命令:

from srv3 import api
from waitress import serve

serve(api, host='127.0.0.1', port=5555) # it is the same if i use serve(srv3)

这会产生:

snd ([(1.0,1.0), (2.0,1.0), (1.0,1.0), (1.0,3.0)],[(1.0,4.0), (1.0,5.0), (1.0,1.0), (1.0,2.0), (1.0,3.0), (1.0,4.0), (1.0,5.0)])

从此处开始,您可以使用[(1.0,4.0),(1.0,5.0),(1.0,1.0),(1.0,2.0),(1.0,3.0),(1.0,4.0),(1.0,5.0)] !!运算符继续获取第二个列表的部分内容。

为了完整性,可以使用fst命令获取元组的第一部分。