Welcome to the min programming language

min is a functional, concatenative programming language with a minimalist syntax, a small but practical standard library, and an advanced REPL. All packed in about 1MB*.
download min v0.12.0
Repository | Issue Tracking | Guide

Features

  • Entirely written in Nim. It can be easily embedded in other nim programs.
  • Follows the functional and concatenative programming paradigms.
  • Provides a wide range of combinators for advanced stack manipulation and dequoting.
  • Provides a minimal set of data types: integer, floats, strings, booleans, and quotations (lists).
  • Fully homoiconic, all code can be accessed as data via quotations.
  • Includes an advanced REPL with auto-completion and history management.
  • Provides a lightweight module system.
  • Provides sigils as syntactic sugar to access environment variables, quoting, defining and binding data, etc.
  • Includes a small, useful standard library for common tasks.
  • Self-contained, statically compiled into single file.

Examples

The following example shows how to find recursively all files in the current folder that were modified in the last hour:

      
. ls-r 
(mtime now 3600 - >) 
filter
    

The following example shows how to calculate the factorial of 5 using the linrec combinator:

      
5 
(dup 0 ==) (1 +) 
(dup 1 -) (*) linrec
    
*: On Windows is actually more than 1MB, but on macOS and Linux it is considerably less. Let's just say 1MB is a good compromise.