\subsection{Classes}
To make the DSL easily extendable with functionality without losing
-extendability of views it as a set of classes that can be implemented by any
-data type.
+extendability of views it is defined as a set of classes that can be
+implemented by any data type.
Arithmetic operations and boolean operators are defined respectively in the
\CI{arith} and \CI{boolExpr} class. Note that the functions defined by the
type to keep track of some information during bytecode compilation.
\begin{lstlisting}[language=Clean,label={lst:bytecode}]
- :: ByteCode a p = BC [BC]
- class toByteCode a :: a -> [Char]
+:: BC
+ = BCNop
+ | BCPush Int
+ | BCPop
+ ...
+
+:: ByteCode a p = BC [BC]
+class toByteCode a :: a -> [Char]
\end{lstlisting}