Type unions

In geometry, a two-dimensional point and a vector are not the same, even if they both have an x and y component. In Julia, we can also define them as different types as follows:

   # see the code in Chapter 6\unions.jl
type Point
    x::Float64
    y::Float64
end

type Vector2D
    x::Float64
    y::Float64
end

Here are the two objects:

  • p = Point(2, 5) that returns Point(2.0, 5.0)
  • v = Vector2D(3, 2) that returns Vector2D(3.0, 2.0)

Suppose we want to define the sum for these types as a point that has coordinates as the sum of the corresponding coordinates:

+(p, v)

This results in an ERROR: `+` has no method matching +(::Point, ::Vector2D) error message.

Even after defining the following, +(p, v) still returns the same error because of multiple dispatch (Julia ...

Get Julia: High Performance Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.