Coffeehouse Post

Single Post Permalink

View Thread: A Modular Language Built with F#
  • User profile image

    Hi C9 friends!

    I've designed a language that I plan to implement soon in F#. It is not your ordinary language, but a modular language that is usefully-defined only once a user-defined 'language module' is plugged in. It is in the vein of the modern 'language workbench' tools, but far more lightweight. SICP readers will know it as the metalinguistic abstraction. I will explain the motiviation for this language, and will then paste the current spec for discussion.

    After many years of typical programming, I've concluded that imperative approaches to programming generally lead to monolothic code bases. This is regardless of the mercilessness with which refactoring is applied. I have concluded that any time one wishes to solve a non-trivial problem in programming, one should find a declarative way to solve that problem. The language I provide gives a foundation upon which declarative languages can be built to solve these problems, thus removing the main impediment to using declarative techniques to solve normal problems.

    By customizing the language with an appropriately-defined module, one can express the declarative languages needed to solve programming problems normally implemented in the imperative style. Even high-grade functional programmers will concede that imperative programming has a place in simulation and UI development. With the modular language and one of the languages implemented with it below (DOL), I will try revoke that concession. I will show that simulations and UIs, the typical bread and butter of high-level imperative programming (OOP), are better implemented with a declarative language.

    Below is the spec as it is. Please note some formatting was lost. Also note that the syntax is a bit ugly due to the use of s-expressions. I am using a very simple syntax solution to make the language as implementable for myself as possible. I would hope to improve the syntax in a fork later.

    If anyone has any questions in person or would like a copy of the more readable original spec, please mail to . Thanks all for reading!