let a => import 'arrays'; let s => import 'stream'; let vmath f v1 v2 => s.zip (a.stream v1) (a.stream v2) -> s.map (@ m v => let [v1 v2] => v; f (v1 { == s.end => 0 }) (v2 { == s.end => 0 }); ) -> s.collect ; let smath f scalar vector => a.stream vector -> s.map (f scalar) -> s.collect; let v+ => vmath +; let v- => vmath -; let s* => smath *; let s/ => smath /;