# Plange

a sequence of one or more punctuation (and special) characters representing an infix operator

## Notes

#### * (multiplication)

• as the arithmetic operator, multiplication: Number * Number → Number
• as the product of Types, making a tuple Type: Type * Type → Type
• as the the inner product of two vectors as an alternative to dot_product: Vector<d, Number> * Vector<d, Number> → Number

#### × (cross_product)

The unicode character MULTIPLICATION SIGN (U+00D7) (not to be confused with x, the unicode character LATIN SMALL LETTER X (U+0078)) may be typed as `_x_`.

• as the arithmetic operator "multiplication" Function signature: Number * Number → Number
• as the cross product of two three component vectors cross_product Function signature: Vector<3> * Vector<3> → Vector<3>
• as the product of Types, making a tuple Type Function signature: Type * Type → Type

#### → (arrow)

The unicode character RIGHTWARD ARROW (U+2192) may be typed as `->`. The arrow operator creates an object which is simultaneously a function type and a maps_to relation. The signature of a function is composed with the left hand side defining the function's domain (the input parameter types) and the right hand defining the codomain (the return type).

• as a factory of a function type Function signature: Type * Type → Type
• as a relation indicating a maps_to constraint Function signature: Set * Set → Relation

#### ∘ (ring)

The unicode character RING OPERATOR (U+2218) may be typed as `_o_`. The ring operator composes functions such that `(f ○ g)(x)` is equivalent to `f(g(x))`.

• as the composition operator Function signature: (X → Y) * (Y → Z) → (X → Z)

#### & (prepend)

The prepend operator creates a new collection, putting the left hand operand at the beginning and then appending the collection in the right hand operand

• as the denumerable constructor prepend Function signature: T * Collection<T> -> Collection<T>

#### ∪ (set_union)

The unicode character UNION (0x222A) may be typed as `_u_`. Not to be confused with 'U' (0x55).

• as the set union Function signature: Set * Set → Set

#### ∩ (set_intersection)

The unicode character INTERSECTION (0x2229) may be typed as `_i_`.

• as the set_intersection operator Function signature: Set * Set → Set

#### / (slash)

• as the collection_difference operator Function signature: Collection * Collection → Collection
• as the division operator Function signature: Number * Number → Number

#### ⊕ (xor)

The unicode character CIRCLED PLUS (0x2295) may be typed as `_xor_`.

• as the set_symmetric_difference operator Function signature: Set * Set → Set
• as the xor operator Function signature: Bool * Bool → Bool Function signature: Integer * Integer → Integer