ez
interpreted programming language
pronounced as it's spelled because it's easy 😅
a functional programming language, with first class functions and closures support.
features
-
support the usual data types like strings, booleans, integers, hashes, arrays, and nil
-
support the usual operators like +
, -
, *
, /
, ==
, !=
, <
, >
, and !
!
is the logical negation operator
==
is the equality operator
!=
is the inequality operator
<
is the less than operator
>
is the greater than operator
+
is the addition operator
-
is the subtraction operator (unary minus)
*
is the multiplication operator
/
is the division operator
-
support the usual flow control operators like if
, else
, let
and ret
if
is the conditional operator
else
is the else operator
let
is the let operator
ret
is the return operator (can be omitted)
-
semi-colons are optional
-
for syntax highlighting, use the ez-language-support
extension
syntax
- print a value:
print(value)
- print a value and a newline: `println(value)
- print a newline:
println()
let
is used to declare a variable: let variable = value
if
is used to declare a conditional: if (condition) { // do something }
else
is used to declare an else block: else { // do something }
ret
is used to return a value: ret value
f
is used to declare a function: f(name) { // do something }
- arrays are declared with
[]
: [1, 2, 3]
- hashes are declared with
{}
: { "key": "value" }
nil
is used when a value is not present: nil
sample code:
println("hello world")
let x = 1;
let y = 2
let z = x + y;
print(z);
let a = "hello";
let b = "world";
let c = a + b;
print(c);
if (x == y) {
print("x is equal to y");
} else {
print("x is not equal to y");
}
let d = if (x == y) {
"x is equal to y"
} else {
"x is not equal to y"
};
print(d);
let add = f(x, y) {
ret x + y;
};
print(add(x, y));
let mul = f(x, y) {
x * y;
};
print(mul(x, y));
let subResult = f(x, y) {
x - y;
}(x, y);
print(subResult);
let mulByFn = f(x, otherFn) {
ret x * otherFn(x)
};
let res = mulByFn(2, f(x) {
x + 2;
});
print(res);
let arr = [1, 2, 3, add(x, y), true];
print(arr[0]);
let hash = {
"key": "value",
"key2": "value2"
};
print(hash["key"]);
- there are some useful bultin functions for arrays:
let a = [1, 2, 3, 4, 5];
let b = push(a, 6); // [1, 2, 3, 4, 5, 6]
let c = tail(a); // [2, 3, 4, 5]
let d = first(a); // 1
let e = last(a); // 5
print(len(a)); // 5
len
is used to get the length of an array or a string: len(a)
run the interpreter
go run main.go
and start typing in the console 💛
- you can run it on a file:
go run main.go -file test.ez