\section{Future work} \label{sec:disc} As we have seen in \autoref{sec:interp:cond}, not all rules that can be specified in mathematical notation are trivial to translate to a functional program. It should be investigated under what conditions rules can or cannot be translated directly. What kind of functional tools can we come up with to make this easier? Our claim has been that semantic rules can be translated almost directly to an implementation in a functional language. We can then ask ourselves: is it possible to store rules in a data structure and write a universal interpreter, say \CI{run :: [Rule stm state] stm state -> Either Error state} (note the parametrization of \CI{stm} and \CI{state})? Under what conditions is it possible for such a universal interpreter to choose those rules that allow for the most efficient interpretation?