struct &Vector { $x $y } fp.initVector = ($x, $y) -> { return &Vector(fn.double($x), fn.double($y)) } fp.addVector = ($a, $b) -> { return parser.op(&Vector($a::$x + $b::$x, $a::$y + $b::$y)) } fp.subVector = ($a, $b) -> { return parser.op(&Vector($a::$x - $b::$x, $a::$y - $b::$y)) } fp.mulVector = ($vec, $scalar) -> { return parser.op(&Vector($vec::$x * $scalar, $vec::$y * $scalar)) } fp.divVector = ($vec, $scalar) -> { return parser.op(&Vector($vec::$x / $scalar, $vec::$y / $scalar)) } fp.printVector = ($vec) -> { fn.println([parser.op($vec::$x), parser.op($vec::$y)]) } $vec1 = fp.initVector(5, 7) $vec2 = fp.initVector(2, 3) fp.printVector($vec1) fp.printVector($vec2) fn.println() fp.printVector(fp.addVector($vec1, $vec2)) fp.printVector(fp.subVector($vec1, $vec2)) fp.printVector(fp.mulVector($vec1, 11)) fp.printVector(fp.divVector($vec1, 2))