Actually save work
This commit is contained in:
parent
82a539a112
commit
67e230c714
10
TODO.xit
10
TODO.xit
|
@ -2,11 +2,11 @@
|
||||||
[x] Fix recursive definition problems in grammar.clj
|
[x] Fix recursive definition problems in grammar.clj
|
||||||
|
|
||||||
TODOS from interpreter
|
TODOS from interpreter
|
||||||
[ ] implement tuple splat patterns
|
[x] implement tuple splat patterns
|
||||||
[ ] update match-list to use new AST representation
|
[x] update match-list to use new AST representation
|
||||||
[ ] fix length comparison when pattern includes splats
|
[x] fix length comparison when pattern includes splats
|
||||||
[ ] update match-dict to use new AST representation
|
[x] update match-dict to use new AST representation
|
||||||
[ ] update match-struct to use new AST representation
|
[x] update match-struct to use new AST representation
|
||||||
[ ] update interpret-receive to use new AST representation
|
[ ] update interpret-receive to use new AST representation
|
||||||
[ ] Check interpret-fn-inner ctx for cycles/bugs
|
[ ] Check interpret-fn-inner ctx for cycles/bugs
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
(defp typed group weak-order [:word (quiet :as) :keyword])
|
(defp typed group weak-order [:word (quiet :as) :keyword])
|
||||||
|
|
||||||
(defp dict-pattern-term flat choice [pair-pattern :word typed splattern])
|
(defp dict-pattern-term flat choice [pair-pattern typed :word splattern])
|
||||||
|
|
||||||
(defp dict-pattern-entry weak-order [dict-pattern-term separators])
|
(defp dict-pattern-entry weak-order [dict-pattern-term separators])
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,7 @@
|
||||||
splat-data (-> splat :data first)
|
splat-data (-> splat :data first)
|
||||||
splat-type (-> splat-data :type)]
|
splat-type (-> splat-data :type)]
|
||||||
(if (= :word splat-type)
|
(if (= :word splat-type)
|
||||||
(let [unmatched (assoc (apply dissoc dict kws) ::data/dict true)
|
(let [unmatched (apply dissoc dict kws)
|
||||||
match? (match splat-data unmatched ctx-diff)]
|
match? (match splat-data unmatched ctx-diff)]
|
||||||
(if (:success match?)
|
(if (:success match?)
|
||||||
{:success true :ctx (merge @ctx-diff (:ctx match?))}
|
{:success true :ctx (merge @ctx-diff (:ctx match?))}
|
||||||
|
@ -216,7 +216,7 @@
|
||||||
(not (map? dict))
|
(not (map? dict))
|
||||||
{:success false :reason "Could not match non-struct value to struct pattern"}
|
{:success false :reason "Could not match non-struct value to struct pattern"}
|
||||||
|
|
||||||
(not (::data/dict dict))
|
(not (::data/struct dict))
|
||||||
{:success false :reason "Cannot match non-struct value to struct pattern"}
|
{:success false :reason "Cannot match non-struct value to struct pattern"}
|
||||||
|
|
||||||
(empty? members)
|
(empty? members)
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
splat-data (-> splat :data first)
|
splat-data (-> splat :data first)
|
||||||
splat-type (-> splat-data :type)]
|
splat-type (-> splat-data :type)]
|
||||||
(if (= :word splat-type)
|
(if (= :word splat-type)
|
||||||
(let [unmatched (assoc (apply dissoc dict kws) ::data/dict true)
|
(let [unmatched (assoc (apply dissoc dict ::data/struct kws) ::data/dict true)
|
||||||
match? (match splat-data unmatched ctx-diff)]
|
match? (match splat-data unmatched ctx-diff)]
|
||||||
(if (:success match?)
|
(if (:success match?)
|
||||||
{:success true :ctx (merge @ctx-diff (:ctx match?))}
|
{:success true :ctx (merge @ctx-diff (:ctx match?))}
|
||||||
|
@ -961,7 +961,7 @@
|
||||||
|
|
||||||
(do
|
(do
|
||||||
(def source "
|
(def source "
|
||||||
let #{...x} = #{:a 1}
|
let @{...x} = @{:a 1, :b 2, :c 3}
|
||||||
x
|
x
|
||||||
")
|
")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user