Irrefutable pattern (source code)

= Irrefutable pattern

A pattern that does not force its matched value merely to establish the match. A <Haskell> pattern written with `~` can defer evaluation of a recursive pair until one component is demanded. This can preserve <productivity> in definitions involving <lazy evaluation>. It does not make every later use of the components terminate.