Go to the first, previous, next, last section, table of contents.

Functional Programming Compilers

Mainstream programming has been stuck in a rut for a quarter of a century: The last major addition to the repertoire was object-oriented programming, which dates back to Simula67 in 1967.

We could use some new ideas!

The only really innovative work I know of in programming language design and implementation right now is coming from the Functional Programming community, whose flagship project is Haskell -- although variants of ML still seem to get the most practical use.

What I find particularly intriguing is that much of the practical power of programming comes from the ability to recombine a small base set of elements in combinatorial fashion to achieve an exponentially large space of results.

Functional programming languages combine smaller elements more freely and compactly than any other languages I know of, and consequently are potentially far more concise and productive than mainstream alternatives.

Muq would be a great environment in which to experiment with fp programming ideas: Much of the infrastructure is already done, adding new compilers is relatively easy, and the result could be compared in practice in free, fair, head-to-head competition with alternative programming syntaxes.

I'd be particularly interested in trying to apply fp ideas to procedurally defined 3D graphics worlds, where free recombination of different procedural ideas is the name of the game -- and where the low-level rendering is so resource intensive (whether done OpenGL- or raytracing-style) as to make efficiency issues in the high-level code just about irrelevant. (Personally, I think the Haskell people are making a strategic mistake in attempting to go head-to-head with C where it is strongest -- efficiency -- rather that concentrating on staking out a claim where C is weakest -- combinatorial power.)

I've included some tentative support for functional style programming in the Muq virtual machine, such as thunks, and I'd be happy to provide additional server support as reasonable needed if someone else wanted to take on the softcode end of the project. (There is virtually zero chance that I will have time to do the whole project myself within the forseeable future.)

Go to the first, previous, next, last section, table of contents.