This seems like a nice discussion of bi-directional programming, something I think folks here have expressed some interest in.
I shouldn’t really comment after such an abbreviated read of it…. but my response after a quick scan was, “Yup. That’s going to be really really hard to get right. Which is why everybody cheats and does something like Model View Controller instead.”
I agree that the two aspects of the approach are:
But I still think the idea is appealing because it promises general solutions to many problem.
This was a really impressive piece, though that’s no surprise because the author, Benjamin C. Pierce, is an enormous name in type theory. I’ve been working on (and dreaming about… mostly the dreaming) a system that’s eventually going to need something much like this, and having this tour of the design space is very useful.
I can certainly see how it probably sounds very abstract and low-payoff. Pierce outlines a few different applications for it; mine will someday be a structure editor working on arbitrary data formats given a schema and a stylesheet for each, which is not far from what he’s focusing on, although he talks primarily about formats that are already self-describing, such as XML and JSON ones.
I’d like to say more here to add value, but I guess there really isn’t a lot. If this sounds at all interesting to you, it’s well worth the read; if it doesn’t, it’s probably going to seem unmotivated and confusing. :)