
Simon Peyton Jones 
251
radical are by definition not evolutionary from the state of where things are 
at.
Today “where things are at” is that big companies are pouring immense 
resources into ecosystems and editors and profilers and tools and 
programmers and skills and all that kind of stuff. The mainstream is, by 
definition, deeply practical. Meanwhile this radical and elegant stuff of 
functional programming has much less of that deep, infrastructural support. 
But at the same time that doesn’t necessarily make it self-indulgent to 
pursue it. Because, after all, unless some people are working on radical and 
elegant things you’re going to end up in a local optimum, incrementally 
optimizing the mainstream but stuck on a low hill. 
So I think that one of the good things about the whole business of academic 
research is that professors can go off and do sort of loopy things without 
being asked how it’s benefiting the bottom line. Some will do things that 
turn out to be fantastically important, and some less so; but you can’t tell 
which is which in advance! So my big-picture justification for why it’s worth 
some people, like me, spending a lot of time on purely functional 
programming, is that it shows promise. I don’t want to claim that it’s exactly 
the way that everyone will be writing programs in the future, but it shows 
promise. And actually I’ll make the case that it shows increasing promise. I 
see it as, when the limestone of imperative programming is worn away, the 
granite of functional programming will be observed. 
That said, I think purely functional programming started quite geeky and 
academic and mathematical. The story of the last, really, 20 years—all the 
time I’ve been working on it—has been a story of becoming increasingly 
practical, focusing not just on abstract ideas but trying to overcome, one by 
one, the obstacles that prevent real-life programmers using functional 
programming languages for real applications. The development of Haskell 
itself is an example of that. 
It’s good that there are a bunch of people out here, maybe slightly 
impractical, who are heading towards the mainstream and maybe the 
perspectives you learn over here in the purely functional world can inform 
and illuminate the mainstream. That, you can see, has happened. Lots of 
stuff about type systems and generics were originally developed in the 
context of functional programming languages. It was a kind of laboratory in