| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (defvar y (+ x 2)) x y |
let x = 1; let y = x + 2; console.log(x); console.log(y); |
x = 1 y = x + 2 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar xyz 173) abc |
let xyz = 173; console.log(abc); |
xyz = 173 print(abc) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (sum x y z) (+ x (+ y z))) (sum 2 1 3) |
function sum(x, y, z) {
return x + (y + z);
}
console.log(sum(2, 1, 3));
|
def sum(x, y, z):
return x + (y + z)
print(sum(2, 1, 3))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (addy x) (defvar y 1) (+ x y)) (addy 2) |
function addy(x) {
let y = 1;
return x + y;
}
console.log(addy(2));
|
def addy(x):
y = 1
return x + y
print(addy(2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar y 1) (deffun (addy x) (+ x y)) (addy 2) |
let y = 1;
function addy(x) {
return x + y;
}
console.log(addy(2));
|
y = 1
def addy(x):
return x + y
print(addy(2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (addy x) (+ x y)) (defvar y 1) (addy 2) |
function addy(x) {
return x + y;
}
let y = 1;
console.log(addy(2));
|
def addy(x):
return x + y
y = 1
print(addy(2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar y 100) (deffun (addy x) (defvar y 200) (+ x y)) (addy 2) |
let y = 100;
function addy(x) {
let y = 200;
return x + y;
}
console.log(addy(2));
|
y = 100
def addy(x):
y = 200
return x + y
print(addy(2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar y 100) (deffun (addy x) (defvar y 200) (+ x y)) (+ (addy 2) y) |
let y = 100;
function addy(x) {
let y = 200;
return x + y;
}
console.log(addy(2) + y);
|
y = 100
def addy(x):
y = 200
return x + y
print(addy(2) + y)
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (addy x) (defvar y 200) (+ x y)) (+ (addy 2) y) |
function addy(x) {
let y = 200;
return x + y;
}
console.log(addy(2) + y);
|
def addy(x):
y = 200
return x + y
print(addy(2) + y)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (main) (defvar x 2) (deffun (get-x) x) (get-x)) (main) |
let x = 1;
function main() {
let x = 2;
function getX() {
return x;
}
return getX();
}
console.log(main());
|
x = 1
def main():
x = 2
def get_x():
return x
return get_x()
print(main())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (get-x) x) (deffun (main) (defvar x 2) (get-x)) (main) |
let x = 1;
function getX() {
return x;
}
function main() {
let x = 2;
return getX();
}
console.log(main());
|
x = 1
def get_x():
return x
def main():
x = 2
return get_x()
print(main())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (main) (defvar x 2) (get-x)) (deffun (get-x) x) (main) |
let x = 1;
function main() {
let x = 2;
return getX();
}
function getX() {
return x;
}
console.log(main());
|
x = 1
def main():
x = 2
return get_x()
def get_x():
return x
print(main())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (main) (deffun (get-x) x) (defvar x 2) (get-x)) (main) |
let x = 1;
function main() {
function getX() {
return x;
}
let x = 2;
return getX();
}
console.log(main());
|
x = 1
def main():
def get_x():
return x
x = 2
return get_x()
print(main())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (defvar x 2) x |
let x = 1; let x = 2; console.log(x); |
x = 1 x = 2 print(x) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (f x x) (+ x x)) (f 1 2) |
function f(x, x) {
return x + x;
}
console.log(f(1, 2));
|
def f(x, x):
return x + x
print(f(1, 2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(/ 1 0) |
console.log(1 / 0); |
print(1 / 0) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (/ 1 0)) 42 |
let x = 1 / 0; console.log(42); |
x = 1 / 0 print(42) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (f x) 42) (f (/ 1 0)) |
function f(x) {
return 42;
}
console.log(f(1 / 0));
|
def f(x):
return 42
print(f(1 / 0))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (defvar y (+ x 2)) x y |
let x = 1; let y = x + 2; console.log(x); console.log(y); |
x = 1 y = x + 2 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar y (+ x 2)) (defvar x 1) x y |
let y = x + 2; let x = 1; console.log(x); console.log(y); |
y = x + 2 x = 1 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (getx) x) (defvar x 12) (defvar y (getx)) y |
function getx() {
return x;
}
let x = 12;
let y = getx();
console.log(y);
|
def getx():
return x
x = 12
y = getx()
print(y)
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (getx) x) (defvar y (getx)) (defvar x 12) y |
function getx() {
return x;
}
let y = getx();
let x = 12;
console.log(y);
|
def getx():
return x
y = getx()
x = 12
print(y)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 2)
(deffun (main)
(deffun (getx)
x)
(defvar y (getx))
(defvar x 3)
y)
(main)
|
let x = 2;
function main() {
function getx() {
return x;
}
let y = getx();
let x = 3;
return y;
}
console.log(main());
|
x = 2
def main():
def getx():
return x
y = getx()
x = 3
return y
print(main())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 0) (defvar y x) (defvar x 2) x y |
let x = 0; let y = x; let x = 2; console.log(x); console.log(y); |
x = 0 y = x x = 2 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (foo) y) (defvar y 1) (foo) |
function foo() {
return y;
}
let y = 1;
console.log(foo());
|
def foo():
return y
y = 1
print(foo())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (gety) (defvar y x) (defvar x 2) y) (gety) |
let x = 1;
function gety() {
let y = x;
let x = 2;
return y;
}
console.log(gety());
|
x = 1
def gety():
y = x
x = 2
return y
print(gety())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar rent 100) (set! rent (* 100 2)) rent |
let rent = 100; rent = 100 * 2; console.log(rent); |
rent = 100 rent = 100 * 2 print(rent) |
| SMoL | JavaScript | Python |
|---|---|---|
(set! foobar 2) foobar |
foobar = 2; console.log(foobar); |
foobar = 2 print(foobar) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (defvar y x) (set! x 0) x y |
let x = 12; let y = x; x = 0; console.log(x); console.log(y); |
x = 12 y = x x = 0 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar m 40) (defvar n m) (set! n 22) m n |
let m = 40; let n = m; n = 22; console.log(m); console.log(n); |
m = 40 n = m n = 22 print(m) print(n) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (defvar y (+ x 100)) (set! x 2) x y |
let x = 1; let y = x + 100; x = 2; console.log(x); console.log(y); |
x = 1 y = x + 100 x = 2 print(x) print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (deffun (f) (set! x 0)) (f) x |
let x = 12;
function f() {
return x = 0;
}
console.log(f());
console.log(x);
|
x = 12
def f():
global x
return (x := 0)
print(f())
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (deffun (f x) (set! x 0)) (f x) x |
let x = 12;
function f(x) {
return x = 0;
}
console.log(f(x));
console.log(x);
|
x = 12
def f(x):
return (x := 0)
print(f(x))
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1) (deffun (getx) x) (deffun (setx new-val) (set! x new-val)) (getx) (setx 2) (getx) |
let x = 1;
function getx() {
return x;
}
function setx(newVal) {
return x = newVal;
}
console.log(getx());
console.log(setx(2));
console.log(getx());
|
x = 1
def getx():
return x
def setx(new_val):
global x
return (x := new_val)
print(getx())
print(setx(2))
print(getx())
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (deffun (set-and-return y) (set! y 0) x) (set-and-return x) |
let x = 12;
function setAndReturn(y) {
y = 0;
return x;
}
console.log(setAndReturn(x));
|
x = 12
def set_and_return(y):
y = 0
return x
print(set_and_return(x))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (deffun (set-and-return y) (set! x 0) y) (set-and-return x) x |
let x = 12;
function setAndReturn(y) {
x = 0;
return y;
}
console.log(setAndReturn(x));
console.log(x);
|
x = 12
def set_and_return(y):
global x
x = 0
return y
print(set_and_return(x))
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar n 3) (deffun (f x) (+ x 1)) (mvec n (f n)) |
let n = 3;
function f(x) {
return x + 1;
}
console.log([ n, f(n) ]);
|
n = 3
def f(x):
return x + 1
print([n, f(n)])
|
| SMoL | JavaScript | Python |
|---|---|---|
(mvec (mvec 1 2) 3) |
console.log([ [ 1, 2 ], 3 ]); |
print([[1, 2], 3]) |
| SMoL | JavaScript | Python |
|---|---|---|
(mvec (mvec 123) (mvec 4 5)) |
console.log([ [ 123 ], [ 4, 5 ] ]); |
print([[123], [4, 5]]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar v (mvec 1 2 3 4)) (vec-len v) |
let v = [ 1, 2, 3, 4 ]; console.log(v.length); |
v = [1, 2, 3, 4] print(len(v)) |
| SMoL | JavaScript | Python |
|---|---|---|
(vec-len (mvec 4 (mvec 5 6))) |
console.log([ 4, [ 5, 6 ] ].length); |
print(len([4, [5, 6]])) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar v (mvec (mvec 10 20) (mvec 30 40))) (vec-ref (vec-ref v 1) 0) |
let v = [ [ 10, 20 ], [ 30, 40 ] ]; console.log(v[1][0]); |
v = [[10, 20], [30, 40]] print(v[1][0]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 2 3)) (vec-set! x 0 100) x |
let x = [ 2, 3 ]; x[0] = 100; console.log(x); |
x = [2, 3] x[0] = 100 print(x) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 2)) (vec-set! x 0 100) x |
let x = [ 2 ]; x[0] = 100; console.log(x); |
x = [2] x[0] = 100 print(x) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar mv (mvec 4 5)) (left mv) |
let mv = [ 4, 5 ]; console.log(mv[0]); |
mv = [4, 5] print(mv[0]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar m (mvec 1 2)) (vec-set! m 1 (mvec 3 4)) (vec-ref m 2) |
let m = [ 1, 2 ]; m[1] = [ 3, 4 ]; console.log(m[2]); |
m = [1, 2] m[1] = [3, 4] print(m[2]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 100)) (defvar y x) (vec-set! x 0 200) y |
let x = [ 100 ]; let y = x; x[0] = 200; console.log(y); |
x = [100] y = x x[0] = 200 print(y) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 1 0)) (deffun (f y) (vec-set! y 0 173)) (f x) x |
let x = [ 1, 0 ];
function f(y) {
return y[0] = 173;
}
console.log(f(x));
console.log(x);
|
x = [1, 0]
def f(y):
return y.__setitem__(0, 173)
print(f(x))
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 3) (defvar v (mvec 1 2 x)) (set! x 4) v |
let x = 3; let v = [ 1, 2, x ]; x = 4; console.log(v); |
x = 3 v = [1, 2, x] x = 4 print(v) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 3)) (defvar v (mvec 1 2 x)) (vec-set! x 0 4) v |
let x = [ 3 ]; let v = [ 1, 2, x ]; x[0] = 4; console.log(v); |
x = [3] v = [1, 2, x] x[0] = 4 print(v) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 3)) (defvar v (mvec 1 2 x)) (set! x 4) v |
let x = [ 3 ]; let v = [ 1, 2, x ]; x = 4; console.log(v); |
x = [3] v = [1, 2, x] x = 4 print(v) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar v (mvec 1 2 3)) (defvar vv (mpair v v)) (vec-set! (right vv) 0 100) (left vv) |
let v = [ 1, 2, 3 ]; let vv = [ v, v ]; vv[1][0] = 100; console.log(vv[0]); |
v = [1, 2, 3] vv = [ v, v ] vv[1][0] = 100 print(vv[0]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 1 0 2)) (vec-set! x 1 x) (vec-len x) |
let x = [ 1, 0, 2 ]; x[1] = x; console.log(x.length); |
x = [1, 0, 2] x[1] = x print(len(x)) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar v (mpair 10 7)) (set-left! v v) (set-right! v 42) (right (left (left v))) |
let v = [ 10, 7 ]; console.log(v[0]=v); console.log(v[1]=42); console.log(v[0][0][1]); |
v = [ 10, 7 ] v[0] = v v[1] = 42 print(((v[0])[0])[1]) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 12) (deffun (f x) (set! x 0)) (f x) x |
let x = 12;
function f(x) {
return x = 0;
}
console.log(f(x));
console.log(x);
|
x = 12
def f(x):
return (x := 0)
print(f(x))
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 5) (deffun (set1 x y) (set! x y)) (deffun (set2 a y) (set! x y)) (set1 x 6) x (set2 x 7) x |
let x = 5;
function set1(x, y) {
return x = y;
}
function set2(a, y) {
return x = y;
}
console.log(set1(x, 6));
console.log(x);
console.log(set2(x, 7));
console.log(x);
|
x = 5
def set1(x, y):
return (x := y)
def set2(a, y):
global x
return (x := y)
print(set1(x, 6))
print(x)
print(set2(x, 7))
print(x)
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 1 7 3)) (defvar pr (mpair x x)) (vec-set! (right pr) 0 100) pr |
let x = [ 1, 7, 3 ]; let pr = [ x, x ]; pr[1][0] = 100; console.log(pr); |
x = [1, 7, 3] pr = [ x, x ] pr[1][0] = 100 print(pr) |
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x (mvec 2 3)) (set-right! x x) (set-left! x x) x |
let x = [ 2, 3 ]; console.log(x[1]=x); console.log(x[0]=x); console.log(x); |
x = [2, 3] x[1] = x x[0] = x print(x) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (get) 42) (defvar f get) (defvar g f) (g) |
function get() {
return 42;
}
let f = get;
let g = f;
console.log(g());
|
def get():
return 42
f = get
g = f
print(g())
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (twice f x) (f (f x))) (deffun (double x) (+ x x)) (twice double 1) |
function twice(f, x) {
return f(f(x));
}
function double(x) {
return x + x;
}
console.log(twice(double, 1));
|
def twice(f, x):
return f(f(x))
def double(x):
return x + x
print(twice(double, 1))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (add1 x) (+ x 1)) (deffun (g) add1) (defvar f (g)) (f 100) |
function add1(x) {
return x + 1;
}
function g() {
return add1;
}
let f = g();
console.log(f(100));
|
def add1(x):
return x + 1
def g():
return add1
f = g()
print(f(100))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (add1 n) (+ n 1)) (defvar v (mvec add1)) ((vec-ref v 0) 2) |
function add1(n) {
return n + 1;
}
let v = [ add1 ];
console.log(v[0](2));
|
def add1(n):
return n + 1
v = [add1]
print(v[0](2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (make-getter) (defvar x 1) (deffun (get-x) x) get-x) (defvar get-x (make-getter)) (get-x) |
function makeGetter() {
let x = 1;
function getX() {
return x;
}
return getX;
}
let getX = makeGetter();
console.log(getX());
|
def make_getter():
x = 1
def get_x():
return x
return get_x
get_x = make_getter()
print(get_x())
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (make-getter x) (deffun (get-x) x) get-x) (defvar get-a (make-getter 1)) (defvar get-b (make-getter 2)) (get-a) (get-b) |
function makeGetter(x) {
function getX() {
return x;
}
return getX;
}
let getA = makeGetter(1);
let getB = makeGetter(2);
console.log(getA());
console.log(getB());
|
def make_getter(x):
def get_x():
return x
return get_x
get_a = make_getter(1)
get_b = make_getter(2)
print(get_a())
print(get_b())
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (make-addy y)
(deffun (addy x)
(+ x y))
addy)
(defvar f (make-addy 10))
(defvar g (make-addy 50))
(f 2)
(g 2)
|
function makeAddy(y) {
function addy(x) {
return x + y;
}
return addy;
}
let f = makeAddy(10);
let g = makeAddy(50);
console.log(f(2));
console.log(g(2));
|
def make_addy(y):
def addy(x):
return x + y
return addy
f = make_addy(10)
g = make_addy(50)
print(f(2))
print(g(2))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1)
(deffun (make-f)
(deffun (addx y)
(+ x y))
addx)
(defvar f (make-f))
(set! x 2)
(f x)
|
let x = 1;
function makeF() {
function addx(y) {
return x + y;
}
return addx;
}
let f = makeF();
x = 2;
console.log(f(x));
|
x = 1
def make_f():
def addx(y):
return x + y
return addx
f = make_f()
x = 2
print(f(x))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (make-counter count)
(deffun (counter)
(set! count (+ count 1))
count)
counter)
(defvar f (make-counter 0))
(defvar g (make-counter 0))
(f)
(f)
(g)
|
function makeCounter(count) {
function counter() {
count = count + 1;
return count;
}
return counter;
}
let f = makeCounter(0);
let g = makeCounter(0);
console.log(f());
console.log(f());
console.log(g());
|
def make_counter(count):
def counter():
nonlocal count
count = count + 1
return count
return counter
f = make_counter(0)
g = make_counter(0)
print(f())
print(f())
print(g())
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (f a b) a + b) (f 5 10) |
function f(a, b) {
a;
(function(x, y) { return x + y; });
return b;
}
console.log(f(5, 10));
|
def f(a, b):
a
+
return b
print(f(5, 10))
|
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (f x) (lambda (y) (+ x y))) (defvar x 0) ((f 2) 1) |
function f(x) {
return function (y) {
return x + y;
};
}
let x = 0;
console.log(f(2)(1));
|
def f(x):
return lambda y: x + y
x = 0
print(f(2)(1))
|
| SMoL | JavaScript | Python |
|---|---|---|
(defvar x 1)
(defvar f
(lambda (y)
(+ x y)))
(set! x 2)
(f x)
|
let x = 1;
let f = function (y) {
return x + y;
};
x = 2;
console.log(f(x));
|
x = 1 f = lambda y: x + y x = 2 print(f(x)) |
| SMoL | JavaScript | Python |
|---|---|---|
(deffun (make-counter count)
(lambda ()
(set! count (+ count 1))
count))
(defvar f (make-counter 0))
(defvar g (make-counter 0))
(f)
(f)
(g)
|
function makeCounter(count) {
return function () {
count = count + 1;
return count;
};
}
let f = makeCounter(0);
let g = makeCounter(0);
console.log(f());
console.log(f());
console.log(g());
|
def make_counter(count):
return lambda: ("WARNING: the translation might be inaccurate", (count := count + 1, count)[-1])[-1]
f = make_counter(0)
g = make_counter(0)
print(f())
print(f())
print(g())
|