on package:base-prelude
on b u x y runs the binary function
b
on the results of applying unary function
u to two
arguments
x and
y. From the opposite perspective, it
transforms two inputs and combines the outputs.
((+) `on` f) x y = f x + f y
Typical usage:
sortBy (compare `on`
fst).
Algebraic properties:
(*) `on` id = (*) -- (if (*) ∉ {⊥, const
⊥})
((*) `on` f) `on` g = (*) `on` (f . g)
flip on f . flip on g = flip on (g .
f)
Like
finally, but only performs the final action if there was
an exception raised by the computation.
Exceptions generated by array operations
The thread is blocked on an MVar, but there are no other
references to the MVar so it can't ever continue.
The thread is waiting to retry an STM transaction, but there are no
other references to any TVars involved, so it can't ever
continue.
blocked on a computation in progress by another thread
currently in a foreign call
blocked in
retry in an STM transaction