creator cover A64m
A64m

A64m

history of functional programming

8subscribers

3posts

About

I have written 150,000 words about the history of functional programming in my native language here: https://klapaucius.github.io/fphistoryru/. I continue to write regularly, adding several thousand words each month. But the text is merely an invitation to discussion — and the number of people interested in discussing the history of functional programming is limited. Even fewer are willing to do so in my native language.
That’s why I’ve been planning to translate these texts into English for some time now. Writing about the history of functional programming is a fantastic hobby. However, translating — or even just editing machine translations — definitely feels like work. And so, my plans remained just plans.
This is why I ask for your support. Receiving even symbolic financial contributions would make me feel obligated to tackle this task.

What is the purpose of this work, and how does it differ from others


> The development of the theory of types that eventually led to the Standard ML type system goes back more than a hundred years.
> David MacQueen, Robert Harper, and John Reppy. "The history of Standard ML." [^MacQ20]
It's not that there's a lack of literature on the history of functional programming. There are already general overviews of functional programming [^Huda89] [^Turn12], as well as histories of specific languages or language families [^Huda07] [^MacQ20] [^McCa78] [^Stee96], and biographies of researchers [^Camp85] [^MacQ14]. So why do we need yet another one?
### Cryptolambdian
When, yet again, gigabytes of memory are insufficient for compiling Haskell code, the question naturally arises: in what _sense_ did functional programming exist in, say, 1973? Unfortunately, materials on the history of functional programming usually don't pay much attention to this. For histories of functional programming, they often contain too little history of _programming_.
We don't aim to define "programming," but in this work, we assume it's the process of writing programs. And our great predecessors, in their works on the history of functional programming, don't particularly like to write about what programs resulted from this process.
Worse, programming historians often venture so far back that it's questionable whether "programming" existed at all in those periods.
For example, MacQueen, Harper, and Reppy start the prehistory of Standard ML in 1874 [^MacQ20]. Obviously, functional programming didn't exist in 1874. It's not so obvious whether it existed in 1974. What programs had been written in functional languages by that year? What implementations were available, and for whom? Until what year could functional programming languages be said to exist only in the same sense as in 1874, as notations in books, notebooks, on chalkboards, and so on?

What was when functional programming was not? What was not?

> Functional programming is an engineering branch of constructive mathematics.  
>              Oleg Nizhnikov.  
We do not aim to define functional programming. However, we are compelled to establish practical boundaries for our study — to choose the history of _what exactly_ we are writing about and to focus on something manageable.  
Many definitions of functional programming are impractical from this perspective. The history of languages with first-class functions today is virtually synonymous with the history of programming languages. Even the few languages that still lack them — such as C++ or Rust — are historically connected in various ways to languages that do have first-class functions. 
Similarly unworkable is the less vast but still unwieldy group of languages historically regarded as functional, which is often the focus of those writing about history of functional programming.  
The main reason this definition of functional languages does not suit us is that this group includes Lisp. And we do not want to write a history of Lisp. Primarily because Lisp’s history is too monumental a topic to allow room for the histories of other languages in this traditional group. Moreover, there is a modern complication that did not exist when the conventional list of functional languages was formed: Lisp is now a typical example of a broad category of languages that were not functional at their inception but became so over time. Just like Java, Lisp had first-class functions added to it. Writing a history of Lisp's functionalization would require comparing it with other languages that underwent the same process — that is, nearly all modern programming languages.  
We would like to set ourselves a realistic goal: to focus on a narrower definition of functional languages and explore their history in greater depth than would be possible if we covered all languages.  
Subscription levels1

Basic level

$ 5.2 per month
Go up