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()) |