A dynamically-typed, interpreted programming language by Ethan Mines
A program consists of definitions (of variables, functions, and/or classes):
make
./run <program_name>.min arg0 arg1 arg2 ... argN
//Declare all variables (including formal parameters) with var
var global = 5;
/* Comments are C-style */
class Person {
var name; //An instance variable
var surname = "Smith"; //Default value
define description() {
return name + " " + surname; //Concatenate strings with +
}
}
//For conditional statements, loops, and function bodies,
// you can omit the braces if you've only one statement
define hi() println("Hi");
//An executable program must have a main method
//A command-line arguments are passed in as an array of strings
define main(var args) {
if (len(args) < 1) return; //Return from a function with our without an expression
var arg0 = get(args, 0);
var num1 = atoi(arg0); //Use the built-in atoi to convert strings to integers
//All types are dynamic
var x = [5, 3, 4, "Minese", 9]; //An array literal
//Use the builtins len, get, set, and append to use arrays
var i = 0;
while (i < len(x)) {
println( get(x, i) ); //Use println (or print) to print to standard out
i = i + 1;
}
append(x, "Arrays are dynamic!");
set(x, 1, 42); //Set the first element to 42
var num = get(x, 4);
if ((num % 15) == 0) { println("Fizzbuzz"); }
else if ((num % 3 ) == 0) println("Fizz");
else if ((num % 5 ) == 0) println("Buzz");
else println("...");
//An anonymous function
var summation = lambda(var accumulator, var operand) return accumulator + operand; ;
//A local, named function
define reduce(var values, var reduction) {
var accumulator = 0;
var i = 0;
while ( i < len(values) ) {
accumulator = reduction(accumulator, get(values, i));
i = i + 1;
}
return accumulator;
}
var nums = [68, 42, 21, 11];
println("The sum of those numbers is ", reduce(nums, summation));
//Construct an object (constructors are not parameterized)
var ethan = Person();
ethan.name = "Ethan";
ethan.surname = "Mines";
println( ethan.description() );
var jerry = null;
if (jerry != null) println("jerry references something!");
if (ethan == jerry) println("ethan and jerry have reference equality!");
}