如何使用地图创建圆圈列表?

时间:2017-03-15 05:24:39

标签: list function haskell

我正在尝试创建一个接收颜色数字的函数,并返回 Circle 对象列表(点,半径,颜色) )像这样改变半径:

[Circle point 1*(400/n) col, Circle point 2*(400/n) col, ..., Circle point n*(400/n) col]

作为Haskell的新手,我正在努力使用地图和添加到列表中的概念,但我尝试使用以下简单方法:

getCircles :: Color -> Float -> [PictureObject]
getCircles col n = [Circle point (map [1,2..n] * (400/n)) col]

毋庸置疑,它不起作用。

2 个答案:

答案 0 :(得分:2)

您好像误解了map的工作方式。您提供了一个函数和一个列表,它使用函数映射列表中的所有元素。

在您的情况下,列表为[1..n],功能为'使用半径'创建一个圆圈。所以我希望你的定义应该使用像

这样的语句
map (\r -> (Circle point r col)) [1..n]

这是使用您可能不熟悉的lambda语法。如果没有查找或使用' let'声明而已。

答案 1 :(得分:0)

列表理解与您的尝试非常接近

[Circle point (x * (400/n)) col | x <- [1..n] ]