variables are added. This means that the programmer has to unbox the
\CI{ByteCode} object to be able to use return values for the monad. Tailor made
access functions are used to achieve this with ease. The fresh variable stream
-in a compiler using an \gls{RWST} is often put into the \emph{Reader} part of
+in a compiler using a \gls{RWST} is often put into the \emph{Reader} part of
the monad. However, not all code is compiled immediately and later on the fresh
variable stream cannot contain variables that were used before. Therefore this
information is put in the state which is kept between compilations.
addSDS sds v s = {s & sdss=[{sds & sdsval=BCValue v}:s.sdss]}
\end{lstlisting}
-All assignable types compile to an \gls{RWST} that writes one instruction. For
-example, using an \gls{SDS} always results in an expression of the form
+All assignable types compile to a \gls{RWST} that writes one instruction. For
+example, using a \gls{SDS} always results in an expression of the form
\CI{sds \x=4 In ...}. The actual \CI{x} is the \gls{RWST} that always writes
one \CI{BCSdsFetch} instruction with the correct \gls{SDS} embedded. When the
call of the \CI{x} is not a read but an assignment, the instruction will be