(iflet (parsed . remaining) (parse parser remaining) ...) (def return (parsed remaining) (cons parsed remaining))
If the speed increase is that large on that testbench, it might very well be due to garbage collection.
This might be an interesting page for our problem here ^^
http://www.valuedlessons.com/2008/03/why-are-my-monads-so-sl...
-----