Basically Function1, but not because we don't want these coming up when implicit search happens...
A Multimethod is basically a glorified registry that uses dynamic reflection (and subtyping) to determine which version of the method to invoke.
A Multiproc2 is a Multimethod that is guaranteed to return Unit
"Universal" Functions that mimic numpy's.
"Universal" Functions that mimic numpy's. A universal function is typically defined on anything that supports elementwise maps.
For example, exp is a UFunc: It just calls exp on all components of the passed in object.
Moreover, "operators" like breeze.linalg.operators.OpAdd are UFuncs as well, with syntactic sugar provided by way of breeze.linalg.NumericOps.
Additional implementations can be added as implicits by extending a UFunc's Impl, InPlaceImpl, or SinkImpl traits. For example, breeze.math.Complex extends breeze.numerics.log with the following implicit: