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.
This thread has exceeded its allocation limit. See setAllocationCounter and enableAllocationLimit.
Arithmetic exceptions.
Exceptions generated by array operations
The ArrowApply class is equivalent to Monad: any monad gives rise to a Kleisli arrow, and any instance of ArrowApply defines a monad.
assert was applied to False.
Asynchronous exceptions.
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
blocked in throwTo
currently in a foreign call
blocked on MVar
blocked on some other resource. Without -threaded, I/O and threadDelay show up as BlockedOnOther, with -threaded they show up as BlockedOnMVar.
blocked in retry in an STM transaction
Pe: Punctuation, Close