on b u x y runs the binary function bon 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.
Apply an implication to a predicate in the implicit context. The
(a ~~ n) parameter is not actually used; it's type is used to
help select a specific fact from the context.
@ -- A safe head function, using an implicitly-passed safety
proof. head :: Fact (IsCons xs) => ([a] ~~ xs) -> a head xs =
Prelude.head (the xs)