all repos — min @ 6526f4750d996bce533a55134d55fba86e4b582e

A small but practical concatenative programming language.

Added about page.
Sun, 09 Jul 2017 20:11:54 +0200




3 files changed, 38 insertions(+), 1 deletions(-)

jump to
A site/contents/_includes/

@@ -0,0 +1,36 @@

+{@ || 0 @} + +## What? + +**min** is an concatenative, fully-homoiconic, functional, interpreted programming language. + +This basically means that: + +* It is based on a somewhat obscure and slightly unintuitive programming paradigm, think of [Forth](, [Factor]( and [Joy]( but with parethesis for an extra [Lisp]( flavor. +* Programs written in min are actually written using *quotations*, i.e. lists. +* It comes with map, filter, find, map-reduce and loads of other functional goodies. See the {#link-module||seq#} for more. +* It is probably slower than the average production-ready programming language. + +## Why? + +Because creating a programming language is something that every programmer needs to do, at some point in life. And also because there are way too few [concatenative]( programming language out there -- so people are likely to be _less_ pissed off than if I made a yet another Lisp instead. + +I always wanted to build a minimalist language, but that could also be used for real work and provided a standard library for common tasks and functionalities like regular expression support, cryptography, execution of external programs, shell-like operators to work with files, and more. + +Also, I wanted it to be fully self-contained, cross platform, and tiny. Less than 1MB is not really tiny, but I feel it's a good compromise compared to the alternatives out there, considering that you only need _one file_ to run any min program. + +I am currently building a static site generator called [HastySite](, that also powers <>. HastySite internally uses min as the language to write the [rules]( to process the source files of the site, and also all its [scripts]( + +## How + +min is developed entirely in [nim]( -- the name is (almost) entirely a coincidence. I wanted to call it _minim_ but then shortened it for more... minimalism. + +min's parser started off as a fork of nim's JSON parser -- adapted to process a concatenative programming language with less primitive types than JSON. It is interpreted in the traditional sense: no bytecode, no JIT, just plain read, parse and run. + +## Who + +I am a [someone]( who is passionate about technology and who _does not_ build new programming languages for a living. + +## When + +min's source code [repository]( was created on November 8^th 2014. Do your maths.
M site/contents/about.mdsite/contents/

@@ -2,4 +2,4 @@ -----

content-type: "page" title: "About" ----- -Coming soon... +{@ _includes/ || 1 @}
M site/contents/home.mdsite/contents/

@@ -25,6 +25,7 @@ <div class="pure-g">

<section class="pure-u-1 pure-u-md-1-2"> <h2>Features</h2> <ul> + <li>Entirely written in <a href="">nim</a>. It can be easily embedded in other nim programs.</li> <li>Follows the <strong>functional</strong> and <strong>concatenative</strong> programming paradigms.</li> <li>Provides a wide range of <strong>combinators</strong> for advanced stack manipulation and dequoting.</li> <li>Provides a <strong>minimal set of data types</strong>: integer, floats, strings, booleans, and quotations (lists).</li>