divnix / POP

Pure Object Prototypes
MIT License
20 stars 1 forks source link

POP: Pure Object Prototypes

POP is a prototype object system for Nix with multiple inheritance. POP is intended as an upgrade to the various "extension systems" of Nix. Indeed, the extension systems of Nix are actually equivalent to each other and to Jsonnet's builtin prototype object system, that have mixin inheritance but in practice are used mostly or only for single inheritance.

See POP.md for an explanation of this object system's design. The source code is also heavily commented. The concepts are also explained in the Scheme and Functional Programming Workshop 2021 article Prototype Object Orientation Functionally (PDF). Regarding the non-adoption of POP in nixpkgs, see discussion on PR #116275.

This code was initially lifted from the MuKn.io nixpkgs fork, where it is used for Gerbil support and the packaging of Glow. It was since reformatted with alejandra.