To get a quick impression about the influence of strictness, toggle the let expressions between strict let! and non-strict let.

You can also enter your own term, e.g. “/\a.\x::a.\f::forall b.b->Int.seq f_{Int} (f_{a} x)” or “\x::a.[]_{Int}”.

Note that recursive let expressions are not allowed.

\c :: a -> b -> a.
let c' = c in
fix (\h :: a -> [b] -> a.
\n :: a. \ys :: [b].
let! z = c' n in
case ys of {
[] -> n;
x:xs -> let! xs' = xs in
let! x' = x in
let n' = c' n x' in
h n' xs'})