The Elegant Struggle: Designing Public/Private Members in a Scripting Language
2025-05-26
A developer, building a fantasy console project, grapples with adding a module system to their scripting language. Exploring various approaches to distinguish public and private declarations – modifier keywords (like Java's `public` and `private`), modifier sections (like C++), sigils in identifiers (like Python's underscore), export manifests (like Scheme), and sigils at declarations (like Oberon's `*`) – they lean towards a novel solution: prefixing declaration keywords with an underscore (e.g., `rec_` for private records, `def_` for private functions). While unconventional, this method offers conciseness and avoids repeating sigils at every use site.
Development
module system