Import prelude
This commit is contained in:
parent
14b6e31081
commit
3fde297e07
|
@ -4,6 +4,7 @@
|
||||||
[ludus.scanner :as scanner]
|
[ludus.scanner :as scanner]
|
||||||
[ludus.ast :as ast]
|
[ludus.ast :as ast]
|
||||||
[ludus.collections :as colls]
|
[ludus.collections :as colls]
|
||||||
|
[ludus.prelude :as prelude]
|
||||||
[clojure.pprint :as pp]))
|
[clojure.pprint :as pp]))
|
||||||
|
|
||||||
;; right now this is not very efficient:
|
;; right now this is not very efficient:
|
||||||
|
@ -132,26 +133,6 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
(def eq {
|
|
||||||
:name "eq"
|
|
||||||
::ast/type ::ast/clj
|
|
||||||
:body =
|
|
||||||
})
|
|
||||||
|
|
||||||
(def add {
|
|
||||||
:name "add"
|
|
||||||
::ast/type ::ast/clj
|
|
||||||
:body +
|
|
||||||
})
|
|
||||||
|
|
||||||
(def panic {
|
|
||||||
:name "panic"
|
|
||||||
::ast/type ::ast/clj
|
|
||||||
:body (fn [& args] (throw (ex-info "Ludus panicked!" {:args args})))
|
|
||||||
})
|
|
||||||
|
|
||||||
(def prelude {"eq" eq "add" add "panic" panic})
|
|
||||||
|
|
||||||
(defn- call-fn [fn tuple ctx]
|
(defn- call-fn [fn tuple ctx]
|
||||||
(let [passed (interpret tuple ctx)]
|
(let [passed (interpret tuple ctx)]
|
||||||
(case (::ast/type fn)
|
(case (::ast/type fn)
|
||||||
|
@ -219,7 +200,7 @@
|
||||||
(let [exprs (:exprs ast)
|
(let [exprs (:exprs ast)
|
||||||
inner (pop exprs)
|
inner (pop exprs)
|
||||||
last (peek exprs)
|
last (peek exprs)
|
||||||
ctx (atom prelude)
|
ctx (atom prelude/prelude)
|
||||||
]
|
]
|
||||||
(run! #(interpret % ctx) inner)
|
(run! #(interpret % ctx) inner)
|
||||||
(interpret last ctx)
|
(interpret last ctx)
|
||||||
|
@ -255,7 +236,7 @@
|
||||||
(do
|
(do
|
||||||
|
|
||||||
(def source "
|
(def source "
|
||||||
if true then :yay else panic (\"whoops\")
|
if false then :yay else print(:foo)
|
||||||
|
|
||||||
")
|
")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user