X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;ds=sidebyside;f=Chapters%2FNormalization.tex;h=433871013eced36c05be270707d14eceeed84646;hb=549db3f3ac20300b86403b0aa4320d7bf3945b5c;hp=4eb9c62b2b3c2af966c23da337628828e36d6a7c;hpb=b2e587f9ea84f6cdd281772667e508544549e6ef;p=matthijs%2Fmaster-project%2Freport.git diff --git a/Chapters/Normalization.tex b/Chapters/Normalization.tex index 4eb9c62..4338710 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 @@ -1571,7 +1590,7 @@ \subsubsection[sec:transformation:caseremoval]{Case removal} This transform removes any case expression with a single alternative and - only wild binders.\refdef{wild binder} + only wild binders.\refdef{wild binders} These "useless" case expressions are usually leftovers from case simplification on extractor case (see the previous example).