Examples
A simple program that prints a greeting.
// Try some CoreLox code... print "Hello, Lox!";
Basic output of an arithmetic expression.
print 3 * 4;
Demonstrates arithmetic operations in CoreLox.
// Simple arithmetic print 10 + 2 * (3 - 1) % 2; // 10
Declaring and reassigning variables.
var breakfast = "beignets"; print breakfast; var beverage = "cafe au lait"; breakfast = "beignets with " + beverage; print breakfast;
Demonstrates conditional branching.
var a = 3;
if (a == 3) {
print a;
a = 2;
}
if a == 3 then {
print a;
a = 1;
}
elif (a == 2) {
print a;
a = 5;
} else {
print a;
a = 4;
}
if a == 4 then print "yeah";
elif a == 5 then print "also yeah";Basic for-loop iteration.
for(var a = 3; a > 0; a = a - 1) {
print a;
}A while-loop decrementing a variable.
var a = 3;
while(a > 0) {
print a;
a = a - 1;
}Declaring and calling a function.
fun areWeHavingItYet() {
print "Yes we are!";
}
print areWeHavingItYet;
areWeHavingItYet();A function that returns a value.
fun sum(a, b) {
return a + b;
}
print sum(3, 2); // 5Demonstrates closures capturing variables.
var x = "global";
fun outer() {
var x = "outer";
fun inner() {
print x;
}
inner();
}
outer();Defines a class and creates an instance.
class Pair {}
var pair = Pair();
pair.first = 1;
pair.second = 2;
print pair.first + pair.second; // 3Demonstrates class inheritance.
class Doughnut {
cook() {
print "Dunk in the fryer.";
}
}
class Cruller < Doughnut {
finish() {
print "Glaze with icing.";
}
}
var c = Cruller();
c.cook();
c.finish();Calling methods on an object.
class Scone {
topping(first, second) {
print "scone with " + first + " and " + second;
}
}
var scone = Scone();
scone.topping("berries", "cream");Capturing a variable from an outer function.
fun outer() {
var x = "outside";
fun inner() {
print x;
}
inner();
}
outer();Demonstrating lexical scoping.
fun some() {
var a = 3;
print a;
}
some();Using `break` in loops.
for(var a = 8; a > 0; a = a - 1) {
if a == 5 then break;
print a;
}Demonstrates a switch-case structure.
var x = 3;
switch (x) {
case 1: print "One";
case 2: print "Two";
case 3: print "Three";
default: print "Default";
}Closures capturing loop variables.
var globalOne;
var globalTwo;
fun main() {
for (var a = 1; a <= 2; a = a + 1) {
fun closure() {
print a;
}
if (globalOne == nil) {
globalOne = closure;
} else {
globalTwo = closure;
}
}
}
main();
globalOne();
globalTwo();Example that causes a recursive stack overflow.
fun a() { b(); }
fun b() { c(); }
fun c() {
c("too", "many");
}
a();A recursive Fibonacci function with timing.
fun fib(n) {
if (n < 2) return n;
return fib(n - 2) + fib(n - 1);
}
var start = clock();
print fib(35);
print clock() - start;One of the benchmarks used during development. Warning: slow! Might take a few seconds to run.
class Zoo {
init() {
this.aardvark = 1;
this.baboon = 1;
this.cat = 1;
this.donkey = 1;
this.elephant = 1;
this.fox = 1;
}
ant() { return this.aardvark; }
banana() { return this.baboon; }
tuna() { return this.cat; }
hay() { return this.donkey; }
grass() { return this.elephant; }
mouse() { return this.fox; }
}
var zoo = Zoo();
var sum = 0;
var start = clock();
var time = clock() - start;
var batch = 0;
while(time < 10) {
while (sum < 10000) {
sum = sum + zoo.ant()
+ zoo.banana()
+ zoo.tuna()
+ zoo.hay()
+ zoo.grass()
+ zoo.mouse();
}
sum = 0;
batch = batch + 1;
time = clock() - start;
}
print batch;CoreLox Playground
Run History
No runs yet.