<p dir="ltr">Indeed - I've found that Erlang is great for writing small interpreters for declarative specifications of domain logic. And a particularly good thing about that approach is when you can have one specification but multiple interpreters (encoder/decoder, evaluator/type checker, ...).</p>

<div class="gmail_quote">Den 07/02/2014 22.16 skrev "Jesper Louis Andersen" <<a href="mailto:jesper.louis.andersen@gmail.com">jesper.louis.andersen@gmail.com</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 7, 2014 at 5:24 PM, Felix Gallo <span dir="ltr"><<a href="mailto:felixgallo@gmail.com" target="_blank">felixgallo@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Jesper, your instinct are correct as usual.  Unfortunately the protocol designers live upstream in a different group over which I have no control, and are incentivized to take the Facebook mantra of "move fast and break things" to heart.</blockquote>


</div><br>One way would perhaps be to screw performance. Break the decoder into multiple small pieces and define an interpreter for the small pieces. Now, the definition is given by the input to the interpreter. It will be slow, but it will be easier to reconfigure. When things slow down, you can replace the interpreted variant with a faster code variant. The idea is that you only need to implement each new concept they cook up, but not each change.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">The basic idea is to have a grammar for the format and then employ a parser generator on the grammar. But you probably don't need the speed up front, only getting the definitions correct.<br>


<br clear="all"><div><br></div>-- <br>J.
</div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div>