X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FNormalization.tex;h=b058b63a2a3debae92f4fe435fe1f31799555c40;hp=4eb9c62b2b3c2af966c23da337628828e36d6a7c;hb=8638abef4686335ede35793b43f3e25930822544;hpb=22ab5555a195a5c054bfe8e6dfd7fc0e011787fe diff --git a/Chapters/Normalization.tex b/Chapters/Normalization.tex index 4eb9c62..b058b63 100644 --- a/Chapters/Normalization.tex +++ b/Chapters/Normalization.tex @@ -1473,10 +1473,30 @@ \transexample{letflat}{Case normalisation}{from}{to} + \placeintermezzo{}{ + \defref{wild binders} + \startframedtext[width=7cm,background=box,frame=no] + \startalignment[center] + {\tfa Wild binders} + \stopalignment + \blank[medium] + In a functional expression, a \emph{wild binder} refers to any + binder that is never referenced. This means that even though it + will be bound to a particular value, that value is never used. + + The Haskell syntax offers the underscore as a wild binder that + cannot even be referenced (It can be seen as introducing a new, + anonymous, binder everytime it is used). + + In these transformations, the term wild binder will sometimes be + used to indicate that a binder must not be referenced. + \stopframedtext + } + \subsubsection{Case normalization} This transformation ensures that all case expressions get a form that is allowed by the intended normal form. This means they - will become one of: \refdef{intended normal form definition} + will become one of: \startitemize \item An extractor case with a single alternative that picks a field @@ -1519,7 +1539,6 @@ Cn wn,0 ... wn,m -> yn \stoptrans - \refdef{wild binder} Note that this transformation applies to case expressions with any scrutinee. If the scrutinee is a complex expression, this might result in duplication of work (hardware). An extra condition to