(def puts
(fn [str] (. (:: Kernel) puts str)))
(def cons
(fn [el list] (. list cons el)))
(def head
(fn [list] (. list head)))
(def tail
(fn [list] (. list tail)))
(def empty?
(fn [list] (. list empty?)))
(def take
(fn [num list] (. list take num)))
(def =
(fn [lhs rhs] (cond ((. lhs == rhs) true) (true false))))
(def !=
(fn [lhs rhs] (cond ((. lhs != rhs) true) (true false))))
(def >
(fn [lhs rhs] (cond ((. lhs > rhs) true) (true false))))
(def <
(fn [lhs rhs] (cond ((. lhs > rhs) true) (true false))))
(def +
(fn [lhs rhs] (. lhs + rhs)))
(def -
(fn [lhs rhs] (. lhs - rhs)))
(def /
(fn [lhs rhs] (. lhs / rhs)))
(def *
(fn [lhs rhs] (. lhs * rhs)))
(def read
(fn [code] (def reader (. (:: Ruspea::Interpreter::Reader) new)) (def code_and_forms (. reader call code)) (. code_and_forms "[]" 1)))
(def load
(fn [path] (puts (. "reading from " << path)) (eval (read (. (:: File) read path)) (%ctx %ctx))))