Prototype Object-Orientation Functionally

François will explore the essence of Object-Orientation (OO) as reduced to two functions—and complete practical object systems to a few tens of lines. His constructions work beautifully in any functional language with dynamic or dependent types (but awkwardly with HM types). He has published complete working implementations in Nix and Scheme.François will elucidate the conceptual distinction between "object," "instance," and "prototype," the absence of which makes previous attempts at presenting OO semantics confusing. He will explain the nature, differences, relationships, and tradeoffs between mixin- vs single- vs multiple- inheritance, prototypes vs classes (classes are metalevel prototypes for types), pure vs stateful objects, single vs multiple dispatch (cf. "friends" and "orphans"), classes vs typeclasses, etc. He will generalize OO from values to computations, records to lenses, and classes to namespaces. An approach that will be presented during this talk makes what was previously complex and ad hoc simple and general.Motto: Object-Orientation is the incremental specification of computations.Note: This talk is an extended version of the shorter talk given at the Scheme Workshop 2021, with a couple of new key findings compared to the paper then published.

Starting from: $500

Unchain your mind at LambdaConf 2024

Buy tickets