summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorW-M-T2016-06-12 11:56:03 +0200
committerW-M-T2016-06-12 11:56:03 +0200
commit0bd2664c37b21274f4233a3dc0666f0f5c986a77 (patch)
treed16258adc18de883f19c8975a9c5e0043346a13a
parentHulp bij bewijzen (diff)
Turned explanation into list
-rw-r--r--explanation-inner.tex30
-rw-r--r--explanation-outer.tex19
2 files changed, 32 insertions, 17 deletions
diff --git a/explanation-inner.tex b/explanation-inner.tex
index cb81c46..54398df 100644
--- a/explanation-inner.tex
+++ b/explanation-inner.tex
@@ -94,25 +94,28 @@ g x
}}
\end{center}
-\textbf{(1)} De argumenten worden er de eerste keer opgezet door het buitenste
+\begin{description}
+\item \textbf{(1)} De argumenten worden er de eerste keer opgezet door het buitenste
programma. Merk op dat het y-argument in het buitenste programma
\texttt{"\textbackslash"\textbackslash""} is, wat de gequotifyde versie is van
\texttt{""}, oftewel de lege string. Het x-argument is dan de niet-lege input.
-\textbf{(2)} Hierna wordt de een string van de rest van het programma (vanaf
+\item \textbf{(2)} Hierna wordt de een string van de rest van het programma (vanaf
(3)) op de stack gezet. Dit zorgt ervoor dat recursie mogelijk is.
-\textbf{(3)} Het programma en de argumenten worden in variabelen opgeslagen.
+\item \textbf{(3)} Het programma en de argumenten worden in variabelen opgeslagen.
"program" voor het programma, "grow" voor het rechterargument, "shrink" voor
-het linkerargument. \textbf{(4)} De waarde van "shrink" wordt opgehaald en
+het linkerargument.
+\item \textbf{(4)} De waarde van "shrink" wordt opgehaald en
vervangen door zijn eerste karakter. Daarna wordt "grow" opgehaald en het
eerste karakter van "shrink" wordt eraan geappend. Het resultaat hiervan wordt
-weggeschreven naar "grow". \textbf{(5)} Nu wordt de waarde van "shrink" nog
+weggeschreven naar "grow".
+\item \textbf{(5)} Nu wordt de waarde van "shrink" nog
eens opgehaald, vervangen door zijn tail en weer teruggeschreven naar "shrink".
Nu is het eerste karakter van shrink dus naar achter "grow" verplaatst.
-\textbf{(6)} De nieuwe waarde van "shrink" wordt nu al vast op de stack gezet,
+\item \textbf{(6)} De nieuwe waarde van "shrink" wordt nu al vast op de stack gezet,
voor dezelfde reden dat dit in het buitenste programma met "input" gebeurde.
Wanneer we hem later nodig hebben hebben we niet de garantie dat de
variabelenaam niet overschreven is, dus we zetten hem er nu al op.
-\textbf{(7)} De nieuwe waarde van "grow" wordt opgehaald en gequotifyed. Ook
+\item \textbf{(7)} De nieuwe waarde van "grow" wordt opgehaald en gequotifyed. Ook
appenden we "o" eraan. Zo vormt het een programmastring die die waarde zou
outputten wanneer uitgevoerd. Dit moeten we doen als "shrink" leeg is geworden.
Merk op dat het programma dat moet worden uitgevoerd wanneer de string leeg is
@@ -120,20 +123,25 @@ geworden in tegenstelling tot in het buitenste programma hier v\'{o}\'{o}r het
andere programma wordt aangemaakt. Dit doen we omdat we hier een waarde van een
variabele gebruiken en we niet weten of de variabele straks overschreven wordt.
We bouwen deze programmastring dus al vast, maar laten hem nog gewoon op de
-stack staan. \textbf{(8)} "shrink" en "grow" worden opgehaald en gequotifyed.
+stack staan.
+\item \textbf{(8)} "shrink" en "grow" worden opgehaald en gequotifyed.
Ook "program" wordt opgehaald en gequotifyed. Dit alles appenden we aan elkaar.
Nu wordt "program" nog eens opgehaald, niet gequotifyed en aan de eerdere sting
geappend. Nu is deze hele string gelijk aan het hele programma, maar met de
-nieuwe waarden van "grow" en "shrink" als argumenten. \textbf{(9)} Nu komt het
+nieuwe waarden van "grow" en "shrink" als argumenten.
+\item \textbf{(9)} Nu komt het
deel waar we de waarde van shrink testen om te kiezen of we output moeten
geven, of nog een recursiestap moeten uitvoeren. De waarde van "shrink" wordt
opgehaald en gebruikt als variabelenaam om het programma dat we in (8) hadden
gebouwd naar weg te schrijven. Vanaf dit punt kunnen we geen van onze
variabelen meer gebruiken, omdat de waarde van "shrink" toevallig gelijk zou
-kunnen zijn geweest aan de naam van een van onze variabelen. \textbf{(10)} Nu
+kunnen zijn geweest aan de naam van een van onze variabelen
+\item \textbf{(10)} Nu
schrijven we het programma dat we in (7) hadden gebouwd en nog op de stack
-stond weg naar de variabele met naam de lege string. \textbf{(11)} Nu halen we
+stond weg naar de variabele met naam de lege string.
+\item \textbf{(11)} Nu halen we
de waarde op van de variabele met als naam de waarde van "shrink" die we in (6)
al op de stack hadden gezet. Als "shrink" leeg was vinden we het programma uit
(7). Anders vinden we het programma uit (8). We voeren het gevonden programma
uit.
+\end{description} \ No newline at end of file
diff --git a/explanation-outer.tex b/explanation-outer.tex
index 691a2ea..25001e1 100644
--- a/explanation-outer.tex
+++ b/explanation-outer.tex
@@ -48,10 +48,13 @@ g x
}}
\end{center}
-\textbf{(1)} Allereerst wordt de inputstring op de stack gezet en naar de
-variabele met naam "input" geschreven. De stack is nu weer leeg. \textbf{(2)}
+\begin{description}
+\item \textbf{(1)} Allereerst wordt de inputstring op de stack gezet en naar de
+variabele met naam "input" geschreven. De stack is nu weer leeg.
+\item \textbf{(2)}
Nu zetten we de inputwaarde weer op de stack voor later gebruik. De reden
-hiervoor volgt straks. \textbf{(3)} Hierna halen we deze inputwaarde voor de
+hiervoor volgt straks.
+\item \textbf{(3)} Hierna halen we deze inputwaarde voor de
tweede keer op, quotifyen we hem en voegen we het toe aan het begin van de
subprogramma-string. Dit kun je zien als het doorgeven van een argument. De
reden dat we de input quotifyen is dat dit ervoor zorgt dat alle karakters in
@@ -59,14 +62,18 @@ de input behouden blijven (ook die met speciale betekenis zoals
"\textbackslash{}") wanneer het subprogramma wordt uitgevoerd. Het subprogramma
staat zelf al gequotifyed hier. Op dit moment staat het grote programma met de
input eraan voorgevoegd op de stack, met als element eronder de inputwaarde die
-we zo nodig hebben. \textbf{(4)} Nu halen we opnieuw de waarde van de input op
+we zo nodig hebben.
+\item \textbf{(4)} Nu halen we opnieuw de waarde van de input op
uit de variabele waarnaar we het eerst hadden weggeschreven en gebruiken we dit
als een variabelenaam om het subprogramma naar weg te schrijven. Merk op dat we
onze opslag van de inputstring verliezen als die toevallig de waarde "input"
had, omdat we die variabele dan overschrijven. Dit is waarom we deze waarde van
tevoren een keer extra op de stack hebben gezet. Zo kunnen we hem bij (6) nog
-gebruiken. \textbf{(5)} Nu zetten we het gequotifyde programma "output de lege
+gebruiken.
+\item \textbf{(5)} Nu zetten we het gequotifyde programma "output de lege
string" op het register met naam de lege string. Ongequotifyed ziet het er zo
-uit: \texttt{""o} \textbf{(6)} Als laatste halen we het programma op van de
+uit: \texttt{""o}
+\item \textbf{(6)} Als laatste halen we het programma op van de
variabele met als naam de inputstring die we in (2) op de stack hadden gezet en
voeren we dit programma uit.
+\end{description} \ No newline at end of file