One of the deepest mysteries in the functional programming world is the Y-Combinator. Many have heard of it, but few have mastered its mysteries.
Although fairly useless in real world software, understanding how the Y-Combinator works and why it is important gives the student an important insight into the nature of functional programming.
Join with us on this journey of understanding.
Be prepared to curry your functions and bind your lambdas as we delve into the whys and wherefores of this paragon of functional programming.
Although you will probably never have a need for the combinator, the effort put forth to understand it will improve your functional programming chops.
This talk is not for the faint of heart, but the successful student will be richly rewarded.
Also, you will understand why "Y-Combinator" is the perfect name for Paul Graham's start-up funding company.
Fullscreen and volume up, please! ;-)
A short movie inspired on Escher's works and a free vision on how it could be his workplace.
— 3D animation by Cristóbal Vila · More info about this movie: etereaestudios.com
— Music theme “Lost Song” by Ólafur Arnalds: olafurarnalds.com
Nygaard and Dahl invented Simula’s classes and objects to master complex problems. Alan Kay invented object orientation (OO) with its networks of communicating objects to facilitate simple and powerful mental models. His goal was to make computers and programming comprehensible to children of all ages. Mainstream programmers missed the importance of communication in Kay’s OO and misused the term. A better name for their approach is ‘class orientation’.I have extended Kay’s original OO with explicit concepts and code that specify how objects interact at runtime. With this new paradigm, Data-Context-Interaction (DCI), programmers reason about their code, new team members get quickly up to speed, maintainers lead a better and more productive life. The DCI Context is a new abstraction that supplements the ubiquitous class. While a class says everything about the inside of an object and nothing about the objects surrounding it, a DCI Context says everything about a network of communicating objects and nothing about their insides. The class is great for describing autonomous objects such as the domain objects in the Data part of DCI. The Context is great for describing how use cases are realized by networks of communicating objects. Communication is now a first-class citizen of programming.