
Hi Abel, I've taken a quick glance through your docs. It's neat that you support a sort of imperative (or as you say, procedural) interface within your monad EDSL, using set<>. I imagine that will make some metaprograms easier to understand. I also think let<> will help readability. Currently I rely on typedefs within the class body and that is not so pretty or consistent. I guess the difference between your lambda<> and mpl::lambda is that yours works more like in FP languages whereas MPL's transforms placeholder expressions into metafunctions. Is there a summary somewhere of the difference between your approach and MPL's?
My parsing library is based on parser combinators and monads.
Oh, interesting - looks like it is of equivalent power but a higher-level interface, more similar to regular expressions. I like that better and hope to build in that direction.
I need to understand how your code works to see the differences and similarities. Do you have documentation/examples somewhere?
I haven't yet documented Angly. There is my blog metagraph.info and the best example is metagraph/libs/metagraph/example/angly_graph_parser.cpp From that, a simple example of the sorts of expressions I'm trying to parse: typedef graph<node<A, edge<t, B>, edge<u, C> >, node<B, edge<v, D> >, node<C, edge<w, E> >, node<D, edge<x, F> >, node<E, edge<y, F>, edge<z, G> > > adjacencies; I.e. declarative EDSLs within the "angly" template expression syntax. I also considered imperative EDSLs but that's not at all where I'm going with this: I'm just trying to get a nice language for declaring metadata. Cheers, Gordon