Hey, this is awesome work! I would definitely consider using something like this as a teaching tool. Surprisingly, there are very few implementations of a simple-as-possible relational algebra DSL out there.<p>I've been working on something in a similar space, i.e. a command-line based tool for manipulating relational data. Based on my experience, I highly recommend that you look into the Blaze [1] and SQLAlchemy [2] ecosystems as a means for covering out some of the items in that TODO list. In particular, you could write a small module that would translate your query AST into blaze's and immediately get the ability to target any RDBMS, CSV file, or Pandas dataframe (and many other backends).<p>In fact, if I were you I would stop work on the query engine side of it and directly target either Blaze or SQLAlchemy. This way you can focus your energy on the fun stuff, which is designing the language!<p>[1] <a href="http://blaze.readthedocs.io/en/latest/index.html" rel="nofollow">http://blaze.readthedocs.io/en/latest/index.html</a>
[2] <a href="http://www.sqlalchemy.org/" rel="nofollow">http://www.sqlalchemy.org/</a>