Haskell - 将列表转换为带索引的对象列表

Haskell - Turning a list into a list of object with index

我在 Haskell 中有一个列表,其中包含一些点的坐标,例如:

[[5.8,2.7,4.1,1.0],[6.2,2.2,4.5,1.5],[5.6,2.5,3.9,1.1]]

已经创建了“点”数据类型

data Point = Point {
    pointSelf :: Int,
    coordinates:: [Float]
} deriving (Show)

我想把那个列表[[Float]]变成一个[Point]的列表,属性"pointSelf"是他的索引,我应该怎么做?

我对 Haskell 和函数式编程有点陌生...

您可以使用zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] 同时枚举两个列表,并对列表的两个项目应用一个函数。因此,您可以构造 Points:

<strong>zipWith Point [0 ..]</strong> myCoords

myCoords坐标列表,所以对于样本数据,myCoords[[5.8,2.7,4.1,1.0],[6.2,2.2,4.5,1.5],[5.6,2.5,3.9,1.1]]