-1

我打算编写一个 map 函数,它本质上接受一个变量和一个列表并返回一个列表。

我尝试使用标准地图,但从我所看到的格式来看,它是“地图功能列表”格式,当我在这里尝试传递另一个参数时,这是另一点。

data Point = {xCoord :: Int,
              yCoord :: Int}

movePoint :: Point -> Point -> Point
movePoint (Point x y) (Point xMove yMove)
    = Point (x + xMove)  (y + yMove)

 // Add a "vector" to a list of points
movePoints :: [Point] -> Point -> [Point]
movePoints = error "Not yet"

例如,如果我有一个向量,例如 (2,2),并且我有一个点列表,例如 [(-2,1),(0,0), (5,4) 等] 我想使用map 将 (2,2) 添加到列表中的所有点并返回点列表,我不知道该怎么做。我是 Haskell 的新手,所以任何提示都会很棒。

4

1 回答 1

8

部分应用该movePoint函数(即,使用比它需要的更少的参数调用它),如下所示:

movePoints pts vec = map (movePoint vec) pts

这样做会创建一个只需要一个参数的新函数,即您第一次没有提供的那个。这被称为柯里化。

于 2019-06-16T04:14:21.253 回答