<div dir="ltr">That seems a bit excessive. C doesn't have higher-kinded types or monads either, *and* it's strict, but we cloned Parsec effectively enough. Neither parser combinators nor PEG/packrat *require* monads, or even lazy evaluation for that matter; they're just easier to implement that way. You can even do Iteratees in C. <a href="http://code.khjk.org/citer/">http://code.khjk.org/citer/</a><div>

<br></div><div>Regarding Rick's SWIG question, really I'd rather avoid using SWIG for any future Hammer bindings, and eventually it'll be eliminated from the existing ones. But could someone explain what makes generating a set of Enums more Rust-ish than using a discriminated union?</div>

<div><br></div><div>Don't get me wrong, I love Ragel, but it has its limitations (character-oriented, not really intended to handle recursion, extra code-generation step), and Hammer was partially written to address those.</div>

<div><br></div><div>Cheers,</div><div>--mlp</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 13, 2014 at 6:41 AM, Steve Klabnik <span dir="ltr"><<a href="mailto:steve@steveklabnik.com" target="_blank">steve@steveklabnik.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It's not possible to directly write a Parsec port because we don't<br>
have HKT and therefore monads. Ragel is probably the best bet for now.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Rust-dev mailing list<br>
<a href="mailto:Rust-dev@mozilla.org">Rust-dev@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/rust-dev" target="_blank">https://mail.mozilla.org/listinfo/rust-dev</a><br>
</div></div></blockquote></div><br></div>