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