From 6affd76bf3690643395455bca0a803efc491f9d3 Mon Sep 17 00:00:00 2001 From: tiye Date: Fri, 22 Jul 2022 20:11:28 +0800 Subject: [PATCH] initial version migrated from pre-existing code; tag 0.0.1 --- .github/workflows/tests.yaml | 4 +- README.md | 47 +- calcit.cirru | 1037 +++++++++++++++++++++++++++++++--- compact.cirru | 147 ++++- main.mjs | 2 +- package.json | 2 +- 6 files changed, 1126 insertions(+), 113 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index e6109f7..cafadab 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -29,6 +29,6 @@ jobs: && git clone https://github.com/calcit-lang/calcit-test.git - name: "test" - run: cr -1 --entry test + run: cr -1 - - run: cr --emit-js -1 --entry test && yarn && node ./main.mjs + - run: cr --emit-js -1 && yarn && node ./main.mjs diff --git a/README.md b/README.md index cc2d305..a18d75f 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,44 @@ +## Quaternion Math for Calcit -Calcit Workflow ----- +TODO. -> running in both Calcit and Calcit-js, with hot code reload. +Function names are boring since Calcit lacks performance polymorphism. You might want [Quaternion in Rust](https://github.com/Quatrefoil-GL/quaternions/). ### Usages -Install [Calcit](https://github.com/calcit-lang/calcit) to run demo: +In `quaternion.core`: -```bash -cr -1 # run once +Complex math: -cr # run and watch -``` +- `&c*` +- `&c+` +- `&c-` +- `c-conjutate` +- `c-length` +- `c-length2` -run tests: +Vector: -```bash -cr -1 --entry test -``` +- `&v+` +- `&v-` +- `v+` +- `v-` +- `v-scale` -run test in JavaScript: +Quaternion math: -```bash -cr --emit-js -1 --entry test # emit-js once -node main.mjs # run code -``` +- `&q*` +- `&q+` +- `&q-` +- `q+` +- `q-` +- `q-conjugate` +- `q-inverse` +- `q-length` +- `q-length2` +- `q-scale` + +> Notice: Quaternion in this library looks like `[] x y z w` since original usage was in three.js . ### Workflow diff --git a/calcit.cirru b/calcit.cirru index 86a7842..876a927 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -1,92 +1,962 @@ {} - :configs $ {} (:init-fn |app.main/main!) (:port 6001) (:reload-fn |app.main/reload!) (:version |0.0.1) - :modules $ [] |calcit-test/ |calcit.std/ + :configs $ {} (:init-fn |quaternion.test/main!) (:port 6001) (:reload-fn |quaternion.test/reload!) (:version |0.0.1) + :modules $ [] |calcit-test/ :entries $ {} - :test $ {} (:init-fn |app.test/main!) (:reload-fn |app.test/reload!) + :test $ {} (:init-fn |quaternion.test/main!) (:reload-fn |quaternion.test/reload!) :modules $ [] |calcit-test/ - :ir $ {} (:package |app) + :ir $ {} (:package |quaternion) :files $ {} - |app.main $ {} - :configs $ {} (:extension nil) + |quaternion.core $ {} :defs $ {} - |calling-func $ {} (:at 1635438145038) (:by |u0) (:type :expr) + |&c* $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1635438146706) (:by |u0) (:text |defn) (:type :leaf) - |j $ {} (:at 1635438145038) (:by |u0) (:text |calling-func) (:type :leaf) - |r $ {} (:at 1635438145038) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&c*) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |v $ {} (:at 1635438147671) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1635440602999) (:by |u0) (:text |println) (:type :leaf) - |j $ {} (:at 1635438316806) (:by |u0) (:text "|\"todo bcc") (:type :leaf) - |main! $ {} (:at 1606310749711) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |let-sugar) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |&c+ $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1606310749711) (:by |u0) (:text |defn) (:type :leaf) - |j $ {} (:at 1606310749711) (:by |u0) (:text |main!) (:type :leaf) - |r $ {} (:at 1606310749711) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&c+) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |t $ {} (:at 1625340406714) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1625340407993) (:by |u0) (:text |run-tests) (:type :leaf) - |u $ {} (:at 1651385435232) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |let-sugar) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |&c- $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&c-) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1651385435232) (:by |u0) (:text |set-interval) (:type :leaf) - |b $ {} (:at 1651385435232) (:by |u0) (:text |2000) (:type :leaf) - |h $ {} (:at 1651385435232) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let-sugar) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1651385435232) (:by |u0) (:text |fn) (:type :leaf) - |b $ {} (:at 1651385435232) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |h $ {} (:at 1651385435232) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1651385435232) (:by |u0) (:text |calling-func) (:type :leaf) - |on-error $ {} (:at 1606310757107) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |&q* $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1606310757107) (:by |u0) (:text |defn) (:type :leaf) - |j $ {} (:at 1606310757107) (:by |u0) (:text |on-error) (:type :leaf) - |r $ {} (:at 1606310757107) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&q*) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1606310780908) (:by |u0) (:text |message) (:type :leaf) - |v $ {} (:at 1606311673317) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |j $ {} (:at 1658491111089) (:by |u0) (:type :expr) :data $ {} - |D $ {} (:at 1606370713438) (:by |u0) (:text |;) (:type :leaf) - |T $ {} (:at 1606311684125) (:by |u0) (:text |draw-error-message) (:type :leaf) - |j $ {} (:at 1606311685136) (:by |u0) (:text |message) (:type :leaf) - |reload! $ {} (:at 1606310753106) (:by |u0) (:type :expr) + |T $ {} (:at 1658491111089) (:by |u0) (:text |noted) (:type :leaf) + |b $ {} (:at 1658491111089) (:by |u0) (:text "|\"w placed at last element") (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490866200) (:by |u0) (:text |let-sugar) (:type :leaf) + |a $ {} (:at 1658490866653) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490874303) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490866766) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490867163) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490868714) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490870101) (:by |u0) (:text |y1) (:type :leaf) + |l $ {} (:at 1658490871145) (:by |u0) (:text |z1) (:type :leaf) + |o $ {} (:at 1658490873307) (:by |u0) (:text |w1) (:type :leaf) + |b $ {} (:at 1658490877011) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490874303) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490866766) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490867163) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490880297) (:by |u0) (:text |x2) (:type :leaf) + |h $ {} (:at 1658490881162) (:by |u0) (:text |y2) (:type :leaf) + |l $ {} (:at 1658490883388) (:by |u0) (:text |z2) (:type :leaf) + |o $ {} (:at 1658490882525) (:by |u0) (:text |w2) (:type :leaf) + |b $ {} (:at 1658491116996) (:by |u0) (:text |b) (:type :leaf) + |g $ {} (:at 1658490885932) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490889085) (:by |u0) (:text |[]) (:type :leaf) + |X $ {} (:at 1658490924319) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490925594) (:by |u0) (:text |->) (:type :leaf) + |b $ {} (:at 1658490926793) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490927430) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490932033) (:by |u0) (:text |w1) (:type :leaf) + |h $ {} (:at 1658490973809) (:by |u0) (:text |x2) (:type :leaf) + |h $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491142746) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490941863) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490943763) (:by |u0) (:text |w2) (:type :leaf) + |l $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490948263) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490953307) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658490955014) (:by |u0) (:text |z2) (:type :leaf) + |o $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490962973) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490964929) (:by |u0) (:text |z1) (:type :leaf) + |h $ {} (:at 1658490966428) (:by |u0) (:text |y2) (:type :leaf) + |Z $ {} (:at 1658490924319) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490925594) (:by |u0) (:text |->) (:type :leaf) + |b $ {} (:at 1658490926793) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490927430) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490932033) (:by |u0) (:text |w1) (:type :leaf) + |h $ {} (:at 1658490982067) (:by |u0) (:text |y2) (:type :leaf) + |h $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490938162) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490941863) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658491020306) (:by |u0) (:text |z2) (:type :leaf) + |l $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490948263) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658491018413) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658490991985) (:by |u0) (:text |w2) (:type :leaf) + |o $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491164029) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490996688) (:by |u0) (:text |z1) (:type :leaf) + |h $ {} (:at 1658490997855) (:by |u0) (:text |x2) (:type :leaf) + |a $ {} (:at 1658490924319) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490925594) (:by |u0) (:text |->) (:type :leaf) + |b $ {} (:at 1658490926793) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490927430) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490932033) (:by |u0) (:text |w1) (:type :leaf) + |h $ {} (:at 1658491040492) (:by |u0) (:text |z2) (:type :leaf) + |h $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491044866) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490941863) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658491047939) (:by |u0) (:text |y2) (:type :leaf) + |l $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491053860) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658491067420) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658491069268) (:by |u0) (:text |x2) (:type :leaf) + |o $ {} (:at 1658490934662) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491055365) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490938525) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490939760) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658491073299) (:by |u0) (:text |z1) (:type :leaf) + |h $ {} (:at 1658491074649) (:by |u0) (:text |w2) (:type :leaf) + |b $ {} (:at 1658490890021) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490893199) (:by |u0) (:text |->) (:type :leaf) + |b $ {} (:at 1658490893773) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490894821) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490898015) (:by |u0) (:text |w1) (:type :leaf) + |h $ {} (:at 1658490900083) (:by |u0) (:text |w2) (:type :leaf) + |h $ {} (:at 1658490900796) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490903560) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490904053) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490904598) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490906847) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490907659) (:by |u0) (:text |x2) (:type :leaf) + |l $ {} (:at 1658490900796) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490903560) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490904053) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490904598) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490914147) (:by |u0) (:text |y1) (:type :leaf) + |h $ {} (:at 1658490915390) (:by |u0) (:text |y2) (:type :leaf) + |o $ {} (:at 1658490900796) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490903560) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490904053) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490904598) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490920258) (:by |u0) (:text |z1) (:type :leaf) + |h $ {} (:at 1658490921729) (:by |u0) (:text |z2) (:type :leaf) + |&q+ $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1606310753106) (:by |u0) (:text |defn) (:type :leaf) - |j $ {} (:at 1606310753106) (:by |u0) (:text |reload!) (:type :leaf) - |r $ {} (:at 1606310753106) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&q+) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |v $ {} (:at 1606310801441) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1606310803027) (:by |u0) (:text |echo) (:type :leaf) - |j $ {} (:at 1625293407488) (:by |u0) (:text "|\"Reloaded.") (:type :leaf) - :ns $ {} (:at 1606310745262) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1606310745262) (:by |u0) (:text |ns) (:type :leaf) - |j $ {} (:at 1606310745262) (:by |u0) (:text |app.main) (:type :leaf) - |r $ {} (:at 1625340359278) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1625340360591) (:by |u0) (:text |:require) (:type :leaf) - |j $ {} (:at 1625340360867) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1625340363084) (:by |u0) (:text |app.test) (:type :leaf) - |j $ {} (:at 1625340363810) (:by |u0) (:text |:refer) (:type :leaf) - |r $ {} (:at 1625340366421) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1625340368206) (:by |u0) (:text |run-tests) (:type :leaf) - |r $ {} (:at 1635438174394) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1635438179295) (:by |u0) (:text |calcit.std.time) (:type :leaf) - |j $ {} (:at 1635438177953) (:by |u0) (:text |:refer) (:type :leaf) - |r $ {} (:at 1635438180356) (:by |u0) (:type :expr) - :data $ {} - |T $ {} (:at 1635438182183) (:by |u0) (:text |set-interval) (:type :leaf) - :proc $ {} (:at 1606310745262) (:by |u0) (:type :expr) + |T $ {} (:at 1658490540128) (:by |u0) (:text |let-sugar) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |z1) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |w1) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z1) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |w1) (:type :leaf) + |&q- $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&q-) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let-sugar) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |z1) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |w1) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y1) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z1) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |w1) (:type :leaf) + |&v+ $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&v+) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x2) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y2) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z2) (:type :leaf) + |&v- $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |&v-) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x2) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |b) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y2) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z2) (:type :leaf) + |c-conjutate $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |c-conjutate) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |c-length $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |c-length) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |js/Math.sqrt) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |js/Math.pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |js/Math.pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |c-length2 $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |c-length2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |js/Math.pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |js/Math.pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |q+ $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q+) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |foldl) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |fn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&q+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |q- $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |foldl) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |rest) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |first) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |fn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&q-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |q-conjugate $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-conjugate) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |q-inverse $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-inverse) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |q-scale) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |q-conjugate) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&/) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |1) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |q-length2) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |q-length $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-length) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |sqrt) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |q-length2 $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-length2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |a) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |pow) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |2) (:type :leaf) + |q-scale $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |q-scale) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |v+ $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |v+) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |foldl) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |fn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&v+) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |v- $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |v-) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |foldl) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |rest) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |first) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |xs) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |fn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&v-) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |acc) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |v-scale $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |defn) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |v-scale) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |let[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |v) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |x) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |y) (:type :leaf) + |l $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |z) (:type :leaf) + |o $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |&*) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |n) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |either) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |w) (:type :leaf) + |h $ {} (:at 1658490540128) (:by |u0) (:text |0) (:type :leaf) + :ns $ {} (:at 1658490540128) (:by |u0) (:type :expr) :data $ {} - |app.test $ {} + |T $ {} (:at 1658490540128) (:by |u0) (:text |ns) (:type :leaf) + |b $ {} (:at 1658490540128) (:by |u0) (:text |quaternion.core) (:type :leaf) + |quaternion.test $ {} :configs $ {} :defs $ {} |main! $ {} (:at 1651385630841) (:by |u0) (:type :expr) @@ -136,16 +1006,34 @@ |j $ {} (:at 1625340056137) (:by |u0) (:type :expr) :data $ {} |T $ {} (:at 1625340056311) (:by |u0) (:text |=) (:type :leaf) - |j $ {} (:at 1625340057399) (:by |u0) (:text |2) (:type :leaf) + |j $ {} (:at 1658491742078) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491742078) (:by |u0) (:text |[]) (:type :leaf) + |b $ {} (:at 1658491742078) (:by |u0) (:text |12) (:type :leaf) + |h $ {} (:at 1658491742078) (:by |u0) (:text |30) (:type :leaf) + |l $ {} (:at 1658491742078) (:by |u0) (:text |24) (:type :leaf) + |o $ {} (:at 1658491742078) (:by |u0) (:text |-60) (:type :leaf) |r $ {} (:at 1625340057796) (:by |u0) (:type :expr) :data $ {} - |T $ {} (:at 1625340058161) (:by |u0) (:text |+) (:type :leaf) - |j $ {} (:at 1625340058562) (:by |u0) (:text |1) (:type :leaf) - |r $ {} (:at 1625340138662) (:by |u0) (:text |1) (:type :leaf) + |T $ {} (:at 1658491641263) (:by |u0) (:text |&q*) (:type :leaf) + |j $ {} (:at 1658491642189) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491642493) (:by |u0) (:text |[]) (:type :leaf) + |h $ {} (:at 1658491643158) (:by |u0) (:text |2) (:type :leaf) + |l $ {} (:at 1658491643489) (:by |u0) (:text |3) (:type :leaf) + |o $ {} (:at 1658491643793) (:by |u0) (:text |4) (:type :leaf) + |q $ {} (:at 1658491708525) (:by |u0) (:text |1) (:type :leaf) + |r $ {} (:at 1658491645375) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491645595) (:by |u0) (:text |[]) (:type :leaf) + |l $ {} (:at 1658491649413) (:by |u0) (:text |6) (:type :leaf) + |m $ {} (:at 1658491654190) (:by |u0) (:text |7) (:type :leaf) + |o $ {} (:at 1658491648117) (:by |u0) (:text |8) (:type :leaf) + |q $ {} (:at 1658491713020) (:by |u0) (:text |5) (:type :leaf) :ns $ {} (:at 1625339956346) (:by |u0) (:type :expr) :data $ {} |T $ {} (:at 1625339956346) (:by |u0) (:text |ns) (:type :leaf) - |j $ {} (:at 1625339956346) (:by |u0) (:text |app.test) (:type :leaf) + |j $ {} (:at 1625339956346) (:by |u0) (:text |quaternion.test) (:type :leaf) |r $ {} (:at 1625340009385) (:by |u0) (:type :expr) :data $ {} |T $ {} (:at 1625340010270) (:by |u0) (:text |:require) (:type :leaf) @@ -159,6 +1047,13 @@ |j $ {} (:at 1625340020648) (:by |u0) (:text |testing) (:type :leaf) |r $ {} (:at 1625340021012) (:by |u0) (:text |is) (:type :leaf) |v $ {} (:at 1625340040078) (:by |u0) (:text |*quit-on-failure?) (:type :leaf) + |n $ {} (:at 1658491621213) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491626471) (:by |u0) (:text |quaternion.core) (:type :leaf) + |b $ {} (:at 1658491627109) (:by |u0) (:text |:refer) (:type :leaf) + |h $ {} (:at 1658491627388) (:by |u0) (:type :expr) + :data $ {} + |T $ {} (:at 1658491632530) (:by |u0) (:text |&q*) (:type :leaf) :proc $ {} (:at 1625339956346) (:by |u0) (:type :expr) :data $ {} :users $ {} diff --git a/compact.cirru b/compact.cirru index f47f885..b3513d4 100644 --- a/compact.cirru +++ b/compact.cirru @@ -1,27 +1,130 @@ -{} (:package |app) - :configs $ {} (:init-fn |app.main/main!) (:reload-fn |app.main/reload!) (:version |0.0.1) - :modules $ [] |calcit-test/ |calcit.std/ +{} (:package |quaternion) + :configs $ {} (:init-fn |quaternion.test/main!) (:reload-fn |quaternion.test/reload!) (:version |0.0.1) + :modules $ [] |calcit-test/ :entries $ {} - :test $ {} (:init-fn |app.test/main!) (:reload-fn |app.test/reload!) + :test $ {} (:init-fn |quaternion.test/main!) (:reload-fn |quaternion.test/reload!) :modules $ [] |calcit-test/ :files $ {} - |app.main $ {} + |quaternion.core $ {} :defs $ {} - |calling-func $ quote - defn calling-func () $ println "\"todo bcc" - |main! $ quote - defn main! () (run-tests) - set-interval 2000 $ fn () (calling-func) - |on-error $ quote - defn on-error (message) (; draw-error-message message) - |reload! $ quote - defn reload! () $ echo "\"Reloaded." - :ns $ quote - ns app.main $ :require - app.test :refer $ run-tests - calcit.std.time :refer $ set-interval - |app.test $ {} + |&c* $ quote + defn &c* (a b) + let-sugar + [] x0 y0 + , a + ([] x1 y1) b + [] + - (* x0 x1) (* y0 y1) + + (* x0 y1) (* x1 y0) + |&c+ $ quote + defn &c+ (a b) + let-sugar + [] x0 y0 + , a + ([] x1 y1) b + [] (+ x0 x1) (+ y0 y1) + |&c- $ quote + defn &c- (a b) + let-sugar + [] x0 y0 + , a + ([] x1 y1) b + [] (- x0 x1) (- y0 y1) + |&q* $ quote + defn &q* (a b) (noted "\"w placed at last element") + let-sugar + [] x1 y1 z1 w1 + , a + ([] x2 y2 z2 w2) b + [] + -> (&* w1 x2) + &+ $ &* x1 w2 + &+ $ &* y1 z2 + &- $ &* z1 y2 + -> (&* w1 y2) + &- $ &* x1 z2 + &+ $ &* y1 w2 + &+ $ &* z1 x2 + -> (&* w1 z2) + &+ $ &* x1 y2 + &- $ &* y1 x2 + &+ $ &* z1 w2 + -> (&* w1 w2) + &- $ &* x1 x2 + &- $ &* y1 y2 + &- $ &* z1 z2 + |&q+ $ quote + defn &q+ (a b) + let-sugar + [] x y z w + , a + ([] x1 y1 z1 w1) b + [] (+ x x1) (+ y y1) (+ z z1) (+ w w1) + |&q- $ quote + defn &q- (a b) + let-sugar + [] x y z w + , a + ([] x1 y1 z1 w1) b + [] (- x x1) (- y y1) (- z z1) (- w w1) + |&v+ $ quote + defn &v+ (a b) + let[] (x y z) a $ let[] (x2 y2 z2) b + [] (&+ x x2) (&+ y y2) (&+ z z2) + |&v- $ quote + defn &v- (a b) + let[] (x y z) a $ let[] (x2 y2 z2) b + [] (&- x x2) (&- y y2) (&- z z2) + |c-conjutate $ quote + defn c-conjutate (a) + let[] (x y) a $ [] (&- 0 x) w + |c-length $ quote + defn c-length (v) + let[] (x y) v $ js/Math.sqrt + + (js/Math.pow x 2) (js/Math.pow y 2) + |c-length2 $ quote + defn c-length2 (v) + let[] (x y) v $ + (js/Math.pow x 2) (js/Math.pow y 2) + |q+ $ quote + defn q+ (& xs) + foldl xs ([] 0 0 0 0) + fn (acc x) (&q+ acc x) + |q- $ quote + defn q- (& xs) + foldl (rest xs) (first xs) + fn (acc x) (&q- acc x) + |q-conjugate $ quote + defn q-conjugate (a) + let[] (x y z w) a $ [] (&- 0 x) (&- 0 y) (&- 0 z) w + |q-inverse $ quote + defn q-inverse (a) + q-scale (q-conjugate a) + &/ 1 $ q-length2 a + |q-length $ quote + defn q-length (a) + let[] (x y z w) a $ sqrt + + (pow x 2) (pow y 2) (pow z 2) (pow w 2) + |q-length2 $ quote + defn q-length2 (a) + let[] (x y z w) a $ + (pow x 2) (pow y 2) (pow z 2) (pow w 2) + |q-scale $ quote + defn q-scale (v n) + let[] (x y z w) v $ [] (&* n x) (&* n y) (&* n z) (&* n w) + |v+ $ quote + defn v+ (& xs) + foldl xs ([] 0 0 0) + fn (acc x) (&v+ acc x) + |v- $ quote + defn v- (& xs) + foldl (rest xs) (first xs) + fn (acc x) (&v- acc x) + |v-scale $ quote + defn v-scale (v n) + let[] (x y z w) v $ [] (&* n x) (&* n y) (&* n z) + &* n $ either w 0 + :ns $ quote (ns quaternion.core) + |quaternion.test $ {} :defs $ {} |main! $ quote defn main! () $ run-tests @@ -31,7 +134,9 @@ defn run-tests () (reset! *quit-on-failure? true) (test-add) |test-add $ quote deftest test-add $ testing |add - is $ = 2 (+ 1 1) + is $ = ([] 12 30 24 -60) + &q* ([] 2 3 4 1) ([] 6 7 8 5) :ns $ quote - ns app.test $ :require + ns quaternion.test $ :require calcit-test.core :refer $ deftest testing is *quit-on-failure? + quaternion.core :refer $ &q* diff --git a/main.mjs b/main.mjs index 3049a77..9fa2c1b 100644 --- a/main.mjs +++ b/main.mjs @@ -1,3 +1,3 @@ -import { main_$x_, reload_$x_ } from "./js-out/app.test.mjs" +import { main_$x_, reload_$x_ } from "./js-out/quaternion.test.mjs" main_$x_() diff --git a/package.json b/package.json index 31d7988..4876e67 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "0.0.7", + "version": "0.0.1", "dependencies": { "@calcit/procs": "^0.6.0-a3" },