On Jun 29, 2015, at 4:08 PM, Eric Scott <[log in to unmask]> wrote:
> Good point about YAML, Mark! I've been wanting to switch to something like that for a while. The really long, dotted parameter names ECJ uses to denote an object hierarchy work great, but are painful to read.
Reading up on YAML, I came across this nasty bit:
- Whitespace indentation is used to denote structure; however tab characters are never allowed as indentation.
Ugh. Apparently we will never, ever learn the mistake we made with Makefiles. This ignorance alone probably kills YAML in my book.
ECJ's parameter files use the structure they use because they're just dressed up Property lists. It's a lot of typing, I'll admit to that. But it's a fair sight more maintainable than XML. Instead of going that route, an interesting approach would be to permit variable replacement like
var.PIPELINE = pop.subpop.0.species.pipe
var.SOURCE = PIPELINE.generate.source
PIPELINE = ec.breed.MultiBreedingPipeline
PIPELINE.generate-max = false
PIPELINE.generate.num-sources = 2
SOURCE.0 = ec.gp.koza.CrossoverPipeline
SOURCE.0.prob = 0.9
SOURCE.1 = ec.breed.ReproductionPipeline
SOURCE.1.prob = 0.1
... we'd have to think deeply upon namespace issues though.