SMoL | JavaScript | Python |
---|---|---|
(deffun (f o) (o 1 1)) (f +) |
function f(o) { return o(1, 1); } console.log(f((function(x, y) { return x + y; }))); |
def f(o): return o(1, 1) print(f(+)) |
SMoL | JavaScript | Python |
---|---|---|
(if 0 #t #f) |
console.log((0 ? true : false)); |
print(True if 0 else False) |
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 |
---|---|---|
(defvar x 42) (deffun (create) (defvar y 42) y) (create) (equal? x y) |
let x = 42; function create() { let y = 42; return y; } console.log(create()); console.log(x === y); |
x = 42 def create(): y = 42 return y print(create()) print(x == y) |
SMoL | JavaScript | Python |
---|---|---|
(pair? (pair 1 2)) (pair? (ivec 1 2)) (pair? '#(1 2)) (pair? '(1 2)) |
N/A |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(let* ([v 1] [w (+ v 2)] [y (* w w)]) (let ([v 3] [y (* v w)]) y)) |
console.log(((v)=>{return ((w)=>{return ((y)=>{return ((v, y)=>{return y;})(3, v * w);})(w * w);})(v + 2);})(1)); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 3) (defvar y (let ([y 6] [x 5]) x)) (* x y) |
let x = 3; let y = ((y, x)=>{return x;})(6, 5); console.log(x * y); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f f) f) (f 5) |
function f(f) { return f; } console.log(f(5)); |
def f(f): return f print(f(5)) |
SMoL | JavaScript | Python |
---|---|---|
(let ([x 4] [y (+ x 10)]) y) |
console.log(((x, y)=>{return y;})(4, x + 10)); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(right (ivec 1 2 3)) |
console.log(ivec(1, 2, 3)[1]); |
print(ivec(1, 2, 3)[1]) |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 5) (deffun (reassign var_name new_val) (defvar var_name new_val) (pair var_name x)) (reassign x 6) x |
let x = 5; function reassign(var_name, new_val) { let var_name = new_val; return [ var_name, x ]; } console.log(reassign(x, 6)); console.log(x); |
x = 5 def reassign(var_name, new_val): var_name = new_val return [ var_name, x ] print(reassign(x, 6)) print(x) |
SMoL | JavaScript | Python |
---|---|---|
(defvar a 1) (deffun (what-is-a) a) (let ([a 2]) (ivec (what-is-a) a)) |
let a = 1; function whatIsA() { return a; } console.log(((a)=>{return ivec(whatIsA(), a);})(2)); |
N/A |
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 |
---|---|---|
(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 |
---|---|---|
(defvar x 0) (ivec x (begin (set! x 1) x) x) |
let x = 0; console.log(ivec(x, (x = 1, x), x)); |
x = 0 print(ivec(x, [x := 1, x][-1], x)) |
SMoL | JavaScript | Python |
---|---|---|
(defvar x (mvec 1 2)) (deffun (f x) (vset! x 0 0)) (f x) x |
let x = [ 1, 2 ]; function f(x) { return x[0] = 0; } console.log(f(x)); console.log(x); |
x = [1, 2] def f(x): return x.__setitem__(0, 0) print(f(x)) 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 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 3) (defvar v (mvec 1 2 x)) (set! x 4) v x |
let x = 3; let v = [ 1, 2, x ]; x = 4; console.log(v); console.log(x); |
x = 3 v = [1, 2, x] x = 4 print(v) print(x) |
SMoL | JavaScript | Python |
---|---|---|
(defvar v (mvec 1 2 3 4)) (defvar vv (mvec v v))(vset! (vref vv 1) 0 100) vv |
let v = [ 1, 2, 3, 4 ]; let vv = [ v, v ]; vv[1][0] = 100; console.log(vv); |
v = [1, 2, 3, 4] vv = [v, v] vv[1][0] = 100 print(vv) |
SMoL | JavaScript | Python |
---|---|---|
(defvar x (mvec 123)) (let ([y x]) (vset! y 0 10)) x |
let x = [ 123 ]; console.log(((y)=>{return y[0] = 10;})(x)); console.log(x); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 123) (let ([y x]) (set! y 10)) x |
let x = 123; console.log(((y)=>{return y = 10;})(x)); console.log(x); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 10) (deffun (f y z) (set! x z) y) (f x 20) x |
let x = 10; function f(y, z) { x = z; return y; } console.log(f(x, 20)); console.log(x); |
x = 10 def f(y, z): global x x = z return y print(f(x, 20)) print(x) |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f x) (lambda (y) (+ x y))) ((f 2) 1) |
function f(x) { return function (y) { return x + y; }; } console.log(f(2)(1)); |
def f(x): return lambda y: x + y print(f(2)(1)) |
SMoL | JavaScript | Python |
---|---|---|
(filter (lambda (n) (> 3 n)) '(1 2 3 4 5)) |
N/A |
N/A |
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 |
---|---|---|
(defvar x 1) (deffun (f y) (+ x y)) (set! x 2) (f x) |
let x = 1; function f(y) { return x + y; } x = 2; console.log(f(x)); |
x = 1 def f(y): return x + y x = 2 print(f(x)) |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 1) (defvar f (lambda (y) (+ x y))) (let ([x 2]) (f x)) |
let x = 1; let f = function (y) { return x + y; }; console.log(((x)=>{return f(x);})(2)); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(defvar x 1) (deffun (f y) (+ x y)) (let ([x 2]) (f x)) |
let x = 1; function f(y) { return x + y; } console.log(((x)=>{return f(x);})(2)); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f x) (+ x 1)) (deffun (new-f x) (* x x)) (f (begin (set! f new-f) 10)) |
function f(x) { return x + 1; } function newF(x) { return x * x; } console.log(f((f = newF, 10))); |
def f(x): return x + 1 def new_f(x): return x * x print(f([f := new_f, 10][-1])) |
SMoL | JavaScript | Python |
---|---|---|
(deffun (make-counter) (let ([count 0]) (lambda () (begin (set! count (+ count 1)) count)))) (defvar f (make-counter)) (defvar g (make-counter)) (f) (g) (f) (f) (g) |
function makeCounter() { return ((count)=>{return function () { return (count = count + 1, count); };})(0); } let f = makeCounter(); let g = makeCounter(); console.log(f()); console.log(g()); console.log(f()); console.log(f()); console.log(g()); |
N/A |
SMoL | JavaScript | Python |
---|---|---|
(defvar y 3) (+ ((lambda (x) (set! y 0) (+ x y)) 1) y) |
let y = 3; console.log(function (x) { y = 0; return x + y; }(1) + y); |
y = 3 print(lambda x: ("WARNING: the translation might be inaccurate", (y := 0, x + y)[-1])[-1](1) + y) |
SMoL | JavaScript | Python |
---|---|---|
(defvar l (list (ivec) (ivec 1) (ivec 2 3))) (filter (lambda (x) (vlen x)) l) |
let l = list(ivec(), ivec(1), ivec(2, 3)); console.log(filter(function (x) { return x.length; }, l)); |
l = list(ivec(), ivec(1), ivec(2, 3)) print(filter(lambda x: len(x), l)) |
SMoL | JavaScript | Python |
---|---|---|
(eq? (λ (x) (+ x x)) (λ (x) (+ x x))) |
console.log(λ(x(), x + x) === λ(x(), x + x)); |
print(λ(x(), x + x) == λ(x(), x + x)) |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f x) (+ x x)) (deffun (g x) (+ x x)) (eq? f g) |
function f(x) { return x + x; } function g(x) { return x + x; } console.log(f === g); |
def f(x): return x + x def g(x): return x + x print(f == g) |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f x) (+ x x)) (deffun (g) f) (eq? f (g)) |
function f(x) { return x + x; } function g() { return f; } console.log(f === g()); |
def f(x): return x + x def g(): return f print(f == g()) |
SMoL | JavaScript | Python |
---|---|---|
(deffun (f) (lambda () 1)) (equal? (f) (f)) |
function f() { return function () { return 1; }; } console.log(f() === f()); |
def f(): return lambda: 1 print(f() == f()) |