Re: symbolic protocols

2013-01-08 Thread Brandon Bloom
> > The defmulti would be closer to > > (defmulti mm first) > > because we need to dig into the list to get the first symbol. > I don't think that there is anything stopping you from creating such a code walker now. Maybe you should built a proof of concept to demonstrate some use cases con

Re: symbolic protocols

2013-01-08 Thread kovas boguta
Letting interprete also consume functions as well as protocols would let it bottom out into actual clojure code that actually implements some logic. Though it would also be handy so have some kind of (escape [bindings] body) clause to allow binding to normal code to temporary names for the sake of

Re: symbolic protocols

2013-01-07 Thread kovas boguta
Maybe the use cases would be more clearer if I fleshed out the interprete operation. The typical case would be (interprete expression [protocol1 protocol2 protocol3 ...]) interprete would limit its operation the protocols specified; everything else would be inert. To implement compiler passes,

Re: symbolic protocols

2013-01-07 Thread kovas boguta
Close. The defmulti would be closer to (defmulti mm first) because we need to dig into the list to get the first symbol. But there need to be a way to recurse as well, if you want to interprete the whole expression. That part is hard to capture in the multimethod. (interprete '(foo (bar 1)))

Re: symbolic protocols

2013-01-07 Thread kovas boguta
one example use case: validating expressions (valid? '(foo (bar 1))) -> protocol implemented by foo decides if it likes its argument structure various semantics about the symbol can be encoded in the protocols. On Tue, Jan 8, 2013 at 1:56 AM, kovas boguta wrote: > This is a pretty embryonic id