+ package:numhask

Complex number constructor. Internally, Complex derives most instances via EuclideanPair. For instance,
>>> sqrt (1.0 +: (-1.0)) :: Complex Double
Complex {complexPair = (1.0986841134678098,-0.45508986056222733)}
>>> sqrt ((-1.0) +: 0.0) :: Complex Double
Complex {complexPair = (6.123233995736766e-17,1.0)}
flipped additive action
(+|) == flip (|+)
zero +| m = m
(++) appends two lists, i.e.,
[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
[x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
If the first list is not finite, the result is the first list.

Performance considerations

This function takes linear time in the number of elements of the first list. Thus it is better to associate repeated applications of (++) to the right (which is the default behaviour): xs ++ (ys ++ zs) or simply xs ++ ys ++ zs, but not (xs ++ ys) ++ zs. For the same reason concat = foldr (++) [] has linear performance, while foldl (++) [] is prone to quadratic slowdown

Examples

>>> [1, 2, 3] ++ [4, 5, 6]
[1,2,3,4,5,6]
>>> [] ++ [1, 2, 3]
[1,2,3]
>>> [3, 2, 1] ++ []
[3,2,1]