如何在Haskell中使用带有变量和列表的map

Jam*_*son -1 haskell functional-programming list arity map-function

我打算编写一个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"
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ica 8

像下面这样部分地应用movePoint函数(即,使用比所需数量更少的参数来调用它):

movePoints pts vec = map (movePoint vec) pts
Run Code Online (Sandbox Code Playgroud)

这样做会创建一个只需要一个参数的新函数,而这是您第一次没有提供的参数。这被称为咖喱。