An illustrated guide for building an intuitive understanding of
This project is dedicated to a beginner interested in understanding Lambda Calculus deeply. If you were curious about this subject, but was hesitant to learn it because of self-doubt in your mathematical ability, this project was undertaken to make it accessible with a minimal amount of prior knowledge. All it takes for someone to learn and master the subject is a curious mind and persistent interest in the subject.
This project is conceived with a goal of imparting the necessary theoretical and practical grounding for the subject. It is designed to act as the spark for an interested learner to play around with Lambda Calculus to get a solid comprehension of the subject. I hope to transfer my understanding of Lambda Calculus I gained by working through the great wealth of materials listed in the prior art section.
It is an easy route to remain in the shadows of the giants and take technology around us for granted. Spending around a decade of hacking on random computer systems without a modicum of understanding: hand waving all the way through and convincing myself that I did good when the green lights of my test suits lit up, I passed muster for being a practicing programmer in this day and age. Constantly reading articles from people who had seen further and were active in various programming community, one develops this notion that most of the technology today reached this point of iteration after partaking in a large network of trade-offs, most of which are not in any kind of optima, but arbitrarily tacked on for the various demands made on the systems. I realized that this is a significant reason why I had to constantly go against the constraints imposed for the kind of tasks I wanted to achieve in my daily practice.
The computing machinery, both on the hardware and software end is influenced by the historical trajectory before us. Some are well thought out, many are historical accidents, and a great deal of micro-decisions that manifests at the day to day level are just chaotic behaviour resulting from multiple parties doing tradeoffs from their desks daily under certain limits. During this continuous conversation among multiple contributors, many a decision made with rationale as weak as “if its not broken, dont fix it, lets ramp up the complexity to 11”.
After realizing that I was in the business of pop culture computing, I was hinted to the idea that a way to powerful and comprehensible interactions with the machine lies beneath the historically accreted layers. A lot of great works in the past inspired me and as I continued to look further, I kept figuring out that one needs to have a good understanding of the system stack as a whole in order to figure out what is actually needed to build an environment conducive to legible, comprehensible, and thus extensible systems. And increasingly as I pieced together the knowledge needed, I found that it isn’t so far fatched a mission as I had thought when I was younger.
This quest to understand how one could design systems from bottom up in a parsimonious fashion is what lead to my explorations in Lambda Calculus. Lambda Calculus is a term commonly tossed around in programming circles as a framework supposedly providing the under girding for functional programming. Though I find it highly revered, I find it is also rarely understood for what it is in its original flavour. I undertook this project to find out what it really is. Lambda Calculus forms the linguistic interface to the system. The part at which the user represents their thought patterns in the language symbols which turn into electrons to make the machine to do its thing. It is a minimal logical system that provides a medium for effective calculability, which means that, you only need a very small set of primitives that lets you perform arbitrary computation.
In a sense, this project is a compilation of my learnings looking at Lambda Calculus from a systems design perspective. Think of it as my travelogue notes that I am preparing for those who want to trace a similar route. It is written in a way to help the curious to locate the beautiful ideas that I keep finding about in my journey. Hope you enjoy what I have put together!