DIO: ZA WARUDO is full of languages without good type system, we don't need anymore!
JOJO: Just one more!
DIO: Do you care about HUMANITY! JOJO?
JOJO: I REJECT MY HUMANITY, DIO!
A dynamic lisp-like language for scripting rust.
drop dup over tuck swap
With nightly rust toolchain :
cargo install jojo
Contributions are welcome! (The code base is still simple for now.)
I will write style-guide and hacking-guide for my contributors :)
See jojo-history for history of this project.
(square x) = (mul x x)
(average x y) = (div (add x y) 2)
(= (sqrt-iter guess x)
(if (good-enough-p guess x)
guess
(sqrt-iter (improve guess x) x)))
(improve guess x) = (average guess (div x guess))
(good-enough-p guess x) = (lt (abs (sub (square guess) x)) 0.001)
(sqrt x) = (sqrt-iter 1 x)
(sqrt 9)
(sqrt (add 100 21))
(square (sqrt 1000))
(cube x) = (mul x (mul x x))
(= (sum term a next b)
(if (gt a b)
0
(add (term a)
(sum term (next a) next b))))
(= (simpson-integral f a b n)
(= h (div (sub b a) n))
(= (simpson-coefficient k)
(cond [(or (eq 0 k) (eq n k)) 1]
[(odd-p k) 4]
[(even-p k) 2]))
(= (simpson-term k)
(mul (simpson-coefficient k)
(f (add a (mul k h)))))
(mul (sum simpson-term 0 inc n)
(div h 3)))
(= assert-delta
(macro [body]
(= delta (car body))
(= a (car (cdr body)))
(= b (car (cdr (cdr body))))
`(assert (lt (abs (sub ~a ~b)) ~delta))))
(assert-delta 0.0001
(simpson-integral cube 0 1 100)
(div 1 4))
See adventure for more code examples.