What is the essence of object-oriented programming?
Incremental composition of code and data fragments with late binding.
We will summarize the theoretical idea in 99 characters of Scheme code.We will explain how the very same design was achieved before by Jsonnet jsonnet.org/ and Nix github.com/NixOS/nixpkgs/blob/master/lib/fixed-points.nix: object instances as trivial fixed-points of prototypes, themselves simple composable mixins in a dynamically-typed pure lazy functional language.
We will also present POO, a practical implementation of Prototype Object-Orientation in a few hundreds of lines of Gerbil Scheme. github.com/fare/gerbil-poo . We will demonstrate how this design can express Class-based Object-Orientation or Typeclasses as simple prototypes for type descriptors (hence the need for dynamic types or reflection), and how it enables both parametric polymorphism and ad hoc polymorphism in interface-passing style. We will show how in practice we use this design to factor our code into extremely succinct components that we can reuse compositionally.
We will briefly mention not-yet-implement projects to overcome limitations to this implementation, including the handling of inheritance hierarchies as DAGs rather than manually linearized lists, method composition, typing, as well as many shaping and caching optimizations.
Notes from the talk:
github.com/fare/gerbil-poo/blob/master/doc/prototypes.md