
Yeah, subject "Finally Tagless" again, sorry, I'm just not done with it yet.
In Olegs haskell implementation he is using classes mainly to model the syntax and instances to use for evaluators / compilers to allow multiple interpretations.
I wonder if it'd be possible to do the same without classes using data types instead?
Something similar to what Luke Palmer has done here:
http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-t...
Günther, You can just use the dictionary translation of type classes to replace them with data types: E.g. class Eval sem where val :: Int -> sem Int add :: sem Int -> sem Int -> sem Int
-->
data EvalDict sem = EvalDict { val :: Int -> sem Int, add :: sem Int -> sem Int -> sem Int } Cheers, Tom