USING: arrays kernel locals math sequences ; IN: foobar :: zig ( p1 p2 -- p3 ) p1 first2 :> ( x1 y1 ) p2 first2 :> ( x2 y2 ) x1 x2 + y1 y2 - + 2 / x2 x1 - y1 y2 + + 2 / 2array ; :: zag ( p1 p2 -- p3 ) p1 first2 :> ( x1 y1 ) p2 first2 :> ( x2 y2 ) x1 x2 + y1 y2 + - 2 / x1 x2 - y1 y2 + + 2 / 2array ; :: dragon ( p1 p2 p3 n -- seq ) n 0 = [ p1 p2 2array ] [ p1 p1 p2 zig p2 n 1 - dragon p2 p2 p3 zag p3 n 1 - dragon 2array ] if ; : foobar ( -- seq ) [let { 100 100 } :> p1 { 356 100 } :> p2 p1 p1 p2 zig p2 15 dragon ] ;