3 ms·
Seriously helpful article. Looking forward to the sequels. we can map each syntax tree to an interpreter Maybe I'm being dense but I'm not sure what you mea
by CalChris 8y ago
Seriously helpful article. Looking forward to the sequels.
we can map each syntax tree to an interpreter
Maybe I'm being dense but I'm not sure what you mean by map here. A map is from set to set. I'm not thinking of an interpreter as a set.
- Xophmeister 8y agoThe set of interpreters.
- joelburget 8y agoI'll use a bit of Haskell in my response, since that's what I'm most comfortable with and what we actually use for our work. Hopefully that's okay. We can define a data type of expressions in our language, with addition, multiplication, etc. data Expr = Addition Expr Expr | Multiplication Expr Expr | ... Then we need the type of an interpreter which consumes program inputs and produces an output. I'll leave this abstract for now. data Interpreter = ... By map, we just mean that we can write a Haskell function with this type interpret :: Expr -> Interpreter interpret (Addition a b) = (+) <$> interpret a <*> interpret b interpret (Multiplication a b) = (*) <$> interpret a <*> interpret b If you're curious, here's some real symbolic evaluation code I wrote doing the same https://github.com/kadena-io/pact/blob/234ba3dd01f0df8b4e462a33c1e711482e03ca99/src/Pact/Analyze/Eval/Numerical.hs#L72-L89 https://github.com/kadena-io/pact/blob/234ba3dd01f0df8b4e462...
- CalChris 8y agoWell, I'm glad I asked. I get this now. It really is a mapping. But this was a bit of shorthand that I didn't get in the post. You might want to add that.