Subtext
I took a look at the subtext programming language. There's a nice screencast which demonstrates why subtext is so different from conventional programming languages.
The key is that although Subtext is a functional language, it has no syntax! Programming is performed via the editor manipulating the data structures using primative operations such as copy and link. The linking is important. Rather than using a tree of operations, Subtext maintains a graph of interlinked functions. In a neat, prolog sort of way, the program you write is always live: results of functions are calculated as you edit the program.
Subtext is cool but 'out there' somewhere. It got me thinking about the nature of syntax in programming though, specifically around refactoring. The goal of refactoring is to "improve the design of a program without changing behaviour". But in a system like Subtext, where you directly manipulate the behaviour: refactoring is impossible. To me, this implies that refactoring is an artifact of syntax. In fact it may just be an artifact of procedural and object oriented syntaxes. I wonder if anyone is busy refactoring in functional languages?