the lack of extendability remains a problem. If a language construct is added,
no compile time guarantee is given that all views support it.
the lack of extendability remains a problem. If a language construct is added,
no compile time guarantee is given that all views support it.
something like the code shown in Listing~\ref{lst:exshallow}. Note that much of
the internals of the language can be hidden using monads.
something like the code shown in Listing~\ref{lst:exshallow}. Note that much of
the internals of the language can be hidden using monads.
caption={A minimal shallow \gls{EDSL}}]
:: Env = ... // Some environment
:: DSL a = DSL (Env -> a)
caption={A minimal shallow \gls{EDSL}}]
:: Env = ... // Some environment
:: DSL a = DSL (Env -> a)
extension is added in a new class, this problem does not arise and views can
choose to implement only parts of the collection of classes.
extension is added in a new class, this problem does not arise and views can
choose to implement only parts of the collection of classes.
caption={A minimal class based shallow \gls{EDSL}}]
:: Env = ... // Some environment
:: Evaluator a = Evaluator (Env -> a)
caption={A minimal class based shallow \gls{EDSL}}]
:: Env = ... // Some environment
:: Evaluator a = Evaluator (Env -> a)