 /// If the given keypath is not present or the retrieved value is not of the appropriate type, this
 /// function returns `.None`.
 infix operator <? {
+	associativity left
 	precedence 150
-	associativity left
 }
 
 /// Force Retrieve | Retrieves a value from a dictionary of JSON values using a given keypath,

/// Split | Splits two computations and combines the result into one Arrow yielding a tuple of
/// the result of each side.
infix operator *** {
	precedence 130
	associativity right
}

/// Fanout | Given two functions with the same source but different targets, this function
/// splits the computation and combines the result of each Arrow into a tuple of the result of
/// each side.
infix operator &&& {
	precedence 130
	associativity right
}

/// MARK: Control.Arrow.Choice

/// Splat | Splits two computations and combines the results into Eithers on the left and right.
infix operator +++ {
	precedence 120
	associativity right
}

/// Fanin | Given two functions with the same target but different sources, this function splits
/// the input between the two and merges the output.
infix operator ||| {
	precedence 120
	associativity right
}

/// MARK: Control.Arrow.Plus

/// Op | Combines two ArrowZero monoids.
infix operator <+> {
	precedence 150
	associativity right
}

/// MARK: Data.JSON

/// function will terminate with a fatal error.  It is recommended that you use Force Retrieve's
/// total cousin `<?` (Retrieve).
infix operator <! {
	associativity left
	precedence 150
}

/// MARK: Data.Set
