|
Boost : |
Subject: Re: [boost] Template metaprogramming libraries
From: Gordon Woodhull (gordon_at_[hidden])
Date: 2011-09-09 17:12:18
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk