init = { time = 0 } type Msg = Tick Float GetKeyState update msg model = case msg of Tick t _ -> { model | time = t } makePoint t x = let angle = 0.1 * t * x * 2 * pi / (toFloat numPoints) in (50 * sin angle,50 * cos angle) numPoints : Int numPoints = 20 myShapes model = [ List.range 0 numPoints -- make list 0,1,2,... |> List.map toFloat -- convert to Floats |> List.map (makePoint model.time) -- map to position on circle |> openPolygon -- connect the points |> outlined (solid 1) red -- colour in the path ]