2017-03-15 122 views
-2

我想創建一個函數,該函數在顏色返回對象(點,半徑,顏色)的名單不斷變化的半徑這樣返回列表:哈斯克爾 - 從功能

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

Haskell是新手我很苦惱地圖和添加到列表的概念,但我嘗試了以下簡單的方法。

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

不用說,它不起作用。

+0

你需要更清晰的不是「它不工作」。怎麼了?你認爲問題在哪裏?等等... – Gab

回答

2

看起來好像您誤解了map的工作方式。您提供了一個函數和一個列表,它使用該函數映射列表中的所有元素。

在你的情況下,列表是[1..n],功能是'使用半徑創建一個圓'。所以我希望你的定義應該使用如下語句:

map (\r -> (Circle point r col)) [1..n] 

這是使用你可能不熟悉的lambda語法。如果不是查找它或者使用'let'語句。

0

列表解析會相當接近你嘗試

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