首页 > 解决方案 > 在函数中使用变量

问题描述

假设我有一个名为“Coord”的数据类型,其定义如下:

type Coord a = [(Int, Int)]

我想创建一个“坐标”类型的变量以在下面的函数中使用。该函数接收一个 Coord 类型的变量,并将列表中每个项目的 x 坐标乘以 2。然后将这些新坐标中的每一个存储在一个 NEW Coord 变量中;我不确定如何创建/声明/使用我打算返回的这个新变量。

foo :: (Eq a) => Coord a -> Coord a

标签: functionvariableshaskellfunctional-programming

解决方案


这将是对列表中的每个元素执行某些操作的手动方式:

type Coord = [(Int, Int)]

multiplyXBy2 :: Coord -> Coord
multiplyXBy2 [] = []
multiplyXBy2 ((x, y):rest) = (x*2, y) : multiplyXBy2 rest

这是一个调用ghci

*Main> multiplyXBy2 [(1,2), (3,4)]
[(2,2),(6,4)]

有关使用语言的基础知识,例如如何访问传递给函数的列表元素或如何以编程方式构建列表,请考虑遵循 LYAH 的函数语法或 RWH 的定义类型、简化函数等教程


推荐阅读