GenI natural language generator (http://projects.haskell.org/GenI)

#1allow structured feature values

One of the persistent problems in trying to use GenI for anything complicated is that we often want to encode interesting things in the features: lists, trees, etc.

GenI features however are flat, and the values are atomic. So they are encoded as strings, which gets really really hacky because you're inventing all sorts of little languages all the time and passing things around via those languages, hoping desperately you don't run into some kind of escaping corner case.

In theory, using recursive feature structures has various implications from a complexity standpoint, which we don't want to get into. But this is only true if we're trying to do fancy unification. If we keep things atomic, we can have all the recursivity we want. I propose that we either make the values parameterisable, or we use some kind of tree structure for them, which should allow folks to encode pretty much whatever they want. That would be a huge win for GenI library users. It may still be needed to invent little languages to encode the contents of these trees, but at least when we're passing them around internally we don't have to deal with that sort of nonsense