let tower x y = ( Fun.cone |> Fun.color 0xff0000 |> Fun.scale (1.2, 1.2, 1.2) ) $ ( Fun.cylinder |> Fun.color 0xffff00 |> Fun.scale (1.0, 3.0, 1.0) |> Fun.move (0.0, -2.0, 0.0) ) |> Fun.move (x, 2.0, y) let wall rotation = [ 0 .. 20 ] |> List.map (fun i -> let scale = if i%2=0 then 1.0 else 0.8 let offs = (1.0-scale)/2.0 Fun.cube |> Fun.scale (1.0, scale, 1.0) |> Fun.move (float i, -offs, 0.0) ) |> List.reduce ($) |> Fun.scale (0.25, 2.0, 0.5) |> Fun.move (-2.5, -0.5, -3.0) |> Fun.rotate (0.0, rotation, 0.0) tower -3.0 -3.0 $ tower -3.0 3.0 $ tower 3.0 3.0 $ tower 3.0 -3.0 $ wall 0.0 $ wall 90.0 $ wall 180.0 $ wall 270.0