我正在尝试创建一个接收颜色和数字的函数,并返回 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]
毋庸置疑,它不起作用。
答案 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] ]