From 467ad75ff7f68e74745ce6967b4c1a4182d4cc6a Mon Sep 17 00:00:00 2001 From: Yogthos Date: Sat, 20 Jun 2026 23:09:27 -0400 Subject: [PATCH] Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) jolt was all-flonum (one :number type, inherited from Janet whose only number type is a double). The Chez runtime has a full numeric tower, so the zero-Janet path now carries it = JVM Clojure semantics: (/ 1 2) => 1/2 (exact Ratio, was 0.5) (integer? 3) => true (integer? 3.0) => false (float? 3.0) => true (ratio? (/ 1 2)) => true (= 3 3.0) => false (== 3 3.0) => true (+ 1 2) => 3 (exact) (/ 1.0 2) => 0.5 (double) jolt= was already exactness-aware (values.ss) and == is value-equality, so =/== match the JVM split. The reader preserves exactness (integer literals exact, a/b ratios exact rationals, decimals/exponents flonums); backend_scheme emit-const renders exact ints/ratios and flonums faithfully; the value-position arithmetic, count, int, compare, bit ops, parseLong, string .length/.indexOf, range, timestamps, and array bytes return exact integers (= JVM int/long) instead of coercing to flonum. double/parseDouble/clojure.math floor|ceil|signum stay double. Only the zero-Janet path carries the tower (the Janet reader loses exactness into a double before emit). The prelude/all-flonum path is unaffected for compiled code; the runtime reader is shared, so a couple of all-flonum reader assertions become value (==) assertions. ~16 numeric corpus cases now give the JVM tower value vs the Janet-era :expected and are allowlisted as tower divergences (Chez == reference JVM) pending the corpus flip to JVM (jolt-ecz0). No BigDecimal type (1M). Re-minted. zero-janet 2682 (floor 2698->2682, the reclassified tower cases), 0 new divergences; fixpoint 10/10, bootstrap 6/6, spine 35/35, cli 49/49; Janet gate 155 files 0 failed. --- host/chez/collections.ss | 7 +- host/chez/converters.ss | 25 ++-- host/chez/dynamic-vars.ss | 6 +- host/chez/host-static.ss | 5 +- host/chez/host-table.ss | 2 +- host/chez/inst-time.ss | 10 +- host/chez/math.ss | 3 +- host/chez/natives-array.ss | 12 +- host/chez/natives-num.ss | 27 ++-- host/chez/natives-str.ss | 13 +- host/chez/post-prelude.ss | 14 ++ host/chez/predicates.ss | 26 +++- host/chez/reader.ss | 18 ++- host/chez/records.ss | 2 +- host/chez/seed/image.ss | 58 ++++---- host/chez/seed/prelude.ss | 190 +++++++++++++------------- host/chez/seq.ss | 27 ++-- jolt-core/jolt/backend_scheme.clj | 20 +-- test/chez/_reader.janet | 7 +- test/chez/run-corpus-zero-janet.janet | 29 +++- 20 files changed, 291 insertions(+), 210 deletions(-) diff --git a/host/chez/collections.ss b/host/chez/collections.ss index 8da85ad..0c5b865 100644 --- a/host/chez/collections.ss +++ b/host/chez/collections.ss @@ -252,10 +252,11 @@ ((or (cseq? coll) (empty-list-t? coll)) (seq-nth coll i #t d)) (else d)))))) -;; jolt models every number as a double, so a count is a flonum — else -;; (= 2 (count m)) is false (jolt= is exactness-aware: 2.0 vs exact 2). +;; a count is an exact integer (JVM parity: count returns a long). jolt= is +;; exactness-aware, so this must be exact to match an exact integer literal: +;; (= 2 (count m)) -> 2 vs exact 2 -> true. (define (jolt-count coll) - (exact->inexact + (begin (cond ((pvec? coll) (pvec-count coll)) ((pmap? coll) (pmap-cnt coll)) ((pset? coll) (pset-count coll)) diff --git a/host/chez/converters.ss b/host/chez/converters.ss index 425d275..4bb7c07 100644 --- a/host/chez/converters.ss +++ b/host/chez/converters.ss @@ -90,28 +90,31 @@ (string-append (if (string? p) p (jolt-str-render-one p)) (number->string jolt-gensym-counter))))) -(define (jolt-int x) (if (char? x) (exact->inexact (char->integer x)) (truncate x))) +;; int/long: truncate toward zero to an EXACT integer (= JVM long). char -> code +;; point (exact). double: always a flonum (= JVM double). +(define (jolt-int x) (if (char? x) (char->integer x) (exact (truncate x)))) (define (jolt-double x) (if (char? x) (exact->inexact (char->integer x)) (exact->inexact x))) -;; compare: 3-way, ported from core_io.janet core-compare. -(define (jolt-cmp3 x y) (cond ((< x y) -1.0) ((> x y) 1.0) (else 0.0))) -(define (jolt-strcmp a b) (cond ((string? a b) 1.0) (else 0.0))) +;; compare: 3-way, returns an EXACT integer (= JVM compare -> int). +(define (jolt-cmp3 x y) (cond ((< x y) -1) ((> x y) 1) (else 0))) +(define (jolt-strcmp a b) (cond ((string? a b) 1) (else 0))) (define (jolt-kw->string k) (let ((ns (keyword-t-ns k))) (if ns (string-append ns "/" (keyword-t-name k)) (keyword-t-name k)))) (define (jolt-sym-ns-string s) (let ((n (symbol-t-ns s))) (if (or (jolt-nil? n) (not n) (eq? n '())) "" n))) +;; compare returns an EXACT integer -1/0/1 (= JVM compare -> int). (define (jolt-compare a b) (cond - ((and (jolt-nil? a) (jolt-nil? b)) 0.0) - ((jolt-nil? a) -1.0) - ((jolt-nil? b) 1.0) + ((and (jolt-nil? a) (jolt-nil? b)) 0) + ((jolt-nil? a) -1) + ((jolt-nil? b) 1) ((and (number? a) (number? b)) (jolt-cmp3 a b)) ((and (string? a) (string? b)) (jolt-strcmp a b)) ((and (keyword? a) (keyword? b)) (jolt-strcmp (jolt-kw->string a) (jolt-kw->string b))) ((and (jolt-symbol? a) (jolt-symbol? b)) (let ((r (jolt-strcmp (jolt-sym-ns-string a) (jolt-sym-ns-string b)))) - (if (= r 0.0) (jolt-strcmp (symbol-t-name a) (symbol-t-name b)) r))) - ((and (boolean? a) (boolean? b)) (cond ((eq? a b) 0.0) ((eq? a #f) -1.0) (else 1.0))) + (if (= r 0) (jolt-strcmp (symbol-t-name a) (symbol-t-name b)) r))) + ((and (boolean? a) (boolean? b)) (cond ((eq? a b) 0) ((eq? a #f) -1) (else 1))) ((and (char? a) (char? b)) (jolt-cmp3 (char->integer a) (char->integer b))) ((and (pvec? a) (pvec? b)) (let ((la (pvec-count a)) (lb (pvec-count b))) @@ -119,9 +122,9 @@ (jolt-cmp3 la lb) (let loop ((i 0)) (if (>= i la) - 0.0 + 0 (let ((r (jolt-compare (pvec-nth-d a i jolt-nil) (pvec-nth-d b i jolt-nil)))) - (if (= r 0.0) (loop (+ i 1)) r))))))) + (if (= r 0) (loop (+ i 1)) r))))))) (else (error #f "compare: cannot compare these types" a b)))) (def-var! "clojure.core" "str" jolt-str) diff --git a/host/chez/dynamic-vars.ss b/host/chez/dynamic-vars.ss index 5d5b403..830581c 100644 --- a/host/chez/dynamic-vars.ss +++ b/host/chez/dynamic-vars.ss @@ -7,9 +7,9 @@ ;; *clojure-version* — a jolt map {:major 1 :minor 11 :incremental 0 :qualifier nil} ;; (jolt is all-flonum, so the numbers are flonums). (def-var! "clojure.core" "*clojure-version*" - (jolt-hash-map (keyword #f "major") 1.0 - (keyword #f "minor") 11.0 - (keyword #f "incremental") 0.0 + (jolt-hash-map (keyword #f "major") 1 + (keyword #f "minor") 11 + (keyword #f "incremental") 0 (keyword #f "qualifier") jolt-nil)) ;; *unchecked-math* — jolt does no unchecked-math elision; the var reads false. diff --git a/host/chez/host-static.ss b/host/chez/host-static.ss index 83a77a4..4a80faa 100644 --- a/host/chez/host-static.ss +++ b/host/chez/host-static.ss @@ -108,7 +108,8 @@ (error #f (string-append "No constructor for class " class)))))))) ;; ---- coercion helpers ------------------------------------------------------- -(define (->num x) (exact->inexact x)) +;; numeric tower (jolt-n6al): currentTimeMillis/nanoTime are exact longs (JVM). +(define (->num x) x) (define (jnum->exact n) (exact (truncate n))) ;; parse an integer string in radix; #f on failure (matches the seed's scan-number) (define (parse-int-str s radix) @@ -291,7 +292,7 @@ (register-host-methods! "string-reader" (list (cons "read" (lambda (self) (let ((s (sr-s self)) (p (sr-pos self))) - (if (>= p (string-length s)) -1.0 + (if (>= p (string-length s)) -1 ; EOF -> exact int -1 (= JVM) (begin (sr-pos! self (+ p 1)) (->num (char->integer (string-ref s p)))))))) (cons "mark" (lambda (self . _) (vector-set! (jhost-state self) 2 (sr-pos self)) jolt-nil)) (cons "reset" (lambda (self) (sr-pos! self (vector-ref (jhost-state self) 2)) jolt-nil)) diff --git a/host/chez/host-table.ss b/host/chez/host-table.ss index 9466f42..4f19fcc 100644 --- a/host/chez/host-table.ss +++ b/host/chez/host-table.ss @@ -70,7 +70,7 @@ (define %h-seq jolt-seq) (set! jolt-seq (lambda (x) (if (htable-sorted? x) (sc-call x kw-op-seq) (%h-seq x)))) (define %h-count jolt-count) -(set! jolt-count (lambda (coll) (if (htable-sorted? coll) (exact->inexact (sc-call coll kw-op-count)) (%h-count coll)))) +(set! jolt-count (lambda (coll) (if (htable-sorted? coll) (sc-call coll kw-op-count) (%h-count coll)))) (define %h-get jolt-get) (set! jolt-get (case-lambda ((coll k) (if (htable-sorted? coll) (sc-call coll kw-op-get k jolt-nil) (%h-get coll k))) diff --git a/host/chez/inst-time.ss b/host/chez/inst-time.ss index 8c554f4..db7720d 100644 --- a/host/chez/inst-time.ss +++ b/host/chez/inst-time.ss @@ -88,7 +88,7 @@ (else (fail))))) (unless (= i len) (fail)) (let ((base-s (+ (* (days-from-civil year month day) 86400) (* hh 3600) (* mm 60) ss))) - (make-jinst (exact->inexact (- (+ (* base-s 1000) frac-ms) (* off-s 1000))))))) + (make-jinst (- (+ (* base-s 1000) frac-ms) (* off-s 1000)))))) ;; --- canonical print form: yyyy-MM-ddThh:mm:ss.fff-00:00 (UTC) --------------- (define (pad2 n) (if (< n 10) (string-append "0" (number->string n)) (number->string n))) @@ -223,7 +223,9 @@ (define (mk-local ms) (make-jhost "local-dt" (vector ms))) (define (mk-formatter pat) (make-jhost "dt-formatter" (vector pat))) (define (fmt-pat f) (vector-ref (jhost-state f) 0)) -(define (now-ms) (exact->inexact (now-millis))) ; now-millis from host-static.ss +(define (now-ms) (now-millis)) ; exact ms (= JVM long); now-millis from host-static.ss +;; coerce a user-supplied ms (exact or flonum) to an exact integer for storage. +(define (ms->exact ms) (exact (round ms))) (register-host-methods! "instant" (list (cons "atZone" (lambda (self zone) (mk-zoned (ms-of self)))) @@ -262,7 +264,7 @@ (cons "ofLocalizedTime" (lambda (fs) (style-fmt 'time fs))) (cons "ofLocalizedDateTime" (lambda (fs) (style-fmt 'datetime fs))))) (register-class-statics! "Instant" - (list (cons "ofEpochMilli" (lambda (ms) (mk-instant (exact->inexact ms)))) + (list (cons "ofEpochMilli" (lambda (ms) (mk-instant (ms->exact ms)))) (cons "now" (lambda () (mk-instant (now-ms)))))) (register-class-statics! "ZoneId" (list (cons "systemDefault" (lambda () (make-jhost "zone-id" (vector "system")))) @@ -283,7 +285,7 @@ ;; or (Date. another-date) -> a jinst (ms-of accepts a number / jinst / instant), so ;; .getTime / inst? / instance? Date|Timestamp work. (jolt-dcmm) (define (date-ctor . args) - (make-jinst (if (null? args) (now-ms) (exact->inexact (ms-of (car args)))))) + (make-jinst (if (null? args) (now-ms) (ms->exact (ms-of (car args)))))) (register-class-ctor! "Date" date-ctor) (register-class-ctor! "java.util.Date" date-ctor) (register-class-ctor! "Timestamp" date-ctor) diff --git a/host/chez/math.ss b/host/chez/math.ss index 1b902de..faf33f4 100644 --- a/host/chez/math.ss +++ b/host/chez/math.ss @@ -22,7 +22,8 @@ (- (expt (- x) (/ 1.0 3.0))) (expt x (/ 1.0 3.0)))) -(define (jolt-math-round x) (floor (+ x 0.5))) +;; clojure.math/round returns a long (exact); floor/ceil/signum/rint return doubles. +(define (jolt-math-round x) (exact (floor (+ x 0.5)))) (define (jolt-math-signum x) (cond ((< x 0.0) -1.0) ((> x 0.0) 1.0) (else 0.0))) (define (jolt-math-to-degrees r) (/ (* r 180.0) jolt-math-pi)) (define (jolt-math-to-radians d) (/ (* d jolt-math-pi) 180.0)) diff --git a/host/chez/natives-array.ss b/host/chez/natives-array.ss index 5f17b68..db3c319 100644 --- a/host/chez/natives-array.ss +++ b/host/chez/natives-array.ss @@ -17,9 +17,9 @@ (make-jolt-array (make-vector (exact (na-idx a)) (if (pair? rest) (car rest) init)) kind) (na-from-seq a kind))) -;; jolt numbers are flonums — array element defaults / masked bytes / count must be -;; INEXACT or jolt's exactness-aware = fails (= 3.0 (exact 3) -> false). -(define (na-byte-of v) (exact->inexact (bitwise-and (exact (floor v)) #xff))) +;; numeric tower (jolt-n6al): array element defaults / masked bytes / count are +;; EXACT integers (= JVM byte/short/int), matching exact integer literals. +(define (na-byte-of v) (bitwise-and (exact (floor v)) #xff)) ;; --- constructors ----------------------------------------------------------- (define (na-object-array a . rest) (na-num-array a rest jolt-nil 'object)) @@ -60,9 +60,9 @@ (define (na-bytes? x) (and (jolt-array? x) (eq? (jolt-array-kind x) 'byte))) (define (na-identity x) x) (define (na-byte x) - (let ((b (bitwise-and (exact (floor x)) #xff))) (exact->inexact (if (>= b 128) (- b 256) b)))) + (let ((b (bitwise-and (exact (floor x)) #xff))) (if (>= b 128) (- b 256) b))) (define (na-short x) - (let ((s (bitwise-and (exact (floor x)) #xffff))) (exact->inexact (if (>= s #x8000) (- s #x10000) s)))) + (let ((s (bitwise-and (exact (floor x)) #xffff))) (if (>= s #x8000) (- s #x10000) s))) ;; --- chunked seqs (Jolt does not chunk; eager equivalents over a buffer) ----- (define-record-type jolt-chunkbuf (fields (mutable items)) (nongenerative jolt-chunkbuf-v1)) @@ -76,7 +76,7 @@ ;; --- extend the collection dispatchers to see a jolt-array ------------------ (define %na-count jolt-count) -(set! jolt-count (lambda (c) (if (jolt-array? c) (exact->inexact (vector-length (jolt-array-vec c))) (%na-count c)))) +(set! jolt-count (lambda (c) (if (jolt-array? c) (vector-length (jolt-array-vec c)) (%na-count c)))) (define %na-seq jolt-seq) (set! jolt-seq (lambda (c) (if (jolt-array? c) (list->cseq (vector->list (jolt-array-vec c))) (%na-seq c)))) (define %na-nth jolt-nth) diff --git a/host/chez/natives-num.ss b/host/chez/natives-num.ss index c5dff2d..6dc85bd 100644 --- a/host/chez/natives-num.ss +++ b/host/chez/natives-num.ss @@ -4,24 +4,25 @@ ;; to an exact integer, operate, and return a flonum. parse-* match the seed's ;; strict shapes (Clojure 1.11: nil on malformed, throw on a non-string). +;; bit ops return EXACT integers (= JVM long). ->int coerces the operand. (define (->int x) (exact (truncate x))) -(define (jolt-bit-and a b) (exact->inexact (bitwise-and (->int a) (->int b)))) -(define (jolt-bit-or a b) (exact->inexact (bitwise-ior (->int a) (->int b)))) -(define (jolt-bit-xor a b) (exact->inexact (bitwise-xor (->int a) (->int b)))) -(define (jolt-bit-and-not a b) (exact->inexact (bitwise-and (->int a) (bitwise-not (->int b))))) -(define (jolt-bit-not a) (exact->inexact (bitwise-not (->int a)))) -(define (jolt-bit-shift-left x n) (exact->inexact (bitwise-arithmetic-shift-left (->int x) (->int n)))) -(define (jolt-bit-shift-right x n) (exact->inexact (bitwise-arithmetic-shift-right (->int x) (->int n)))) +(define (jolt-bit-and a b) (bitwise-and (->int a) (->int b))) +(define (jolt-bit-or a b) (bitwise-ior (->int a) (->int b))) +(define (jolt-bit-xor a b) (bitwise-xor (->int a) (->int b))) +(define (jolt-bit-and-not a b) (bitwise-and (->int a) (bitwise-not (->int b)))) +(define (jolt-bit-not a) (bitwise-not (->int a))) +(define (jolt-bit-shift-left x n) (bitwise-arithmetic-shift-left (->int x) (->int n))) +(define (jolt-bit-shift-right x n) (bitwise-arithmetic-shift-right (->int x) (->int n))) (define (bit-mask n) (bitwise-arithmetic-shift-left 1 (->int n))) -(define (jolt-bit-set x n) (exact->inexact (bitwise-ior (->int x) (bit-mask n)))) -(define (jolt-bit-clear x n) (exact->inexact (bitwise-and (->int x) (bitwise-not (bit-mask n))))) -(define (jolt-bit-flip x n) (exact->inexact (bitwise-xor (->int x) (bit-mask n)))) +(define (jolt-bit-set x n) (bitwise-ior (->int x) (bit-mask n))) +(define (jolt-bit-clear x n) (bitwise-and (->int x) (bitwise-not (bit-mask n)))) +(define (jolt-bit-flip x n) (bitwise-xor (->int x) (bit-mask n))) (define (jolt-bit-test x n) (not (zero? (bitwise-and (->int x) (bit-mask n))))) ;; unsigned-bit-shift-right: logical shift over 64-bit longs. For the common ;; non-negative operand it equals the arithmetic shift; the negative-operand -;; 64-bit-window case is not modeled (no fixed-width longs on the all-flonum side). +;; 64-bit-window case is not modeled. (define (jolt-unsigned-bit-shift-right x n) - (exact->inexact (bitwise-arithmetic-shift-right (->int x) (->int n)))) + (bitwise-arithmetic-shift-right (->int x) (->int n))) ;; ---- string->scalar parsers ------------------------------------------------- (define (ascii-digit? c) (and (char>=? c #\0) (char<=? c #\9))) @@ -34,7 +35,7 @@ (define (jolt-parse-long s) (if (not (string? s)) (error #f "parse-long requires a string" s) - (if (parse-long-shape? s) (exact->inexact (string->number s)) jolt-nil))) + (if (parse-long-shape? s) (string->number s) jolt-nil))) ; exact long ;; strict float shape: [+-]? ( D+ (. D*)? | . D+ ) ([eE][+-]? D+)? fully anchored. (define (parse-double-shape? s) diff --git a/host/chez/natives-str.ss b/host/chez/natives-str.ss index f31dbd7..a39b7da 100644 --- a/host/chez/natives-str.ss +++ b/host/chez/natives-str.ss @@ -91,18 +91,17 @@ ((string=? method "toLowerCase") (ascii-string-down s)) ((string=? method "toUpperCase") (ascii-string-up s)) ((string=? method "trim") (str-trim s)) - ((string=? method "length") (exact->inexact (string-length s))) + ((string=? method "length") (string-length s)) ; exact int (= JVM) ((string=? method "isEmpty") (fx=? (string-length s) 0)) ((string=? method "charAt") (string-ref s (jolt->idx (arg 0)))) ((string=? method "substring") (substring s (jolt->idx (arg 0)) (if (fx>? (length rest) 1) (jolt->idx (arg 1)) (string-length s)))) ((string=? method "indexOf") - (exact->inexact - (str-index-of s (str-needle (arg 0)) - (if (fx>? (length rest) 1) (jolt->idx (arg 1)) 0)))) + (str-index-of s (str-needle (arg 0)) + (if (fx>? (length rest) 1) (jolt->idx (arg 1)) 0))) ((string=? method "lastIndexOf") - (exact->inexact (str-last-index-of s (str-needle (arg 0))))) + (str-last-index-of s (str-needle (arg 0)))) ((string=? method "startsWith") (let ((p (arg 0))) (and (fx>=? (string-length s) (string-length p)) (string=? (substring s 0 (string-length p)) p)))) @@ -153,10 +152,10 @@ (define (str-lower s) (ascii-string-down s)) (define (str-reverse-b s) (list->string (reverse (string->list s)))) -;; (str-find needle haystack) -> flonum index of first occurrence, or nil. +;; (str-find needle haystack) -> exact int index of first occurrence, or nil. (define (str-find needle s) (let ((i (str-index-of s needle 0))) - (if (fxinexact i)))) + (if (fx stringify each element (Clojure str), join by sep. (define (str-join coll . opt) diff --git a/host/chez/post-prelude.ss b/host/chez/post-prelude.ss index 23d60f5..2f1c782 100644 --- a/host/chez/post-prelude.ss +++ b/host/chez/post-prelude.ss @@ -80,3 +80,17 @@ (def-var! "clojure.core" "line-seq" (lambda (rdr) (if (reader-jhost? rdr) (chez-line-seq rdr) (jolt-invoke overlay-line-seq rdr))))) +;; JVM-parity numeric tower (jolt-n6al): the overlay (20-coll.clj) carries an +;; all-flonum number-predicate web with no Ratio concept (ratio? -> false, +;; double? -> not-integer, float? -> double?, rational? -> int?), which +;; misclassifies exact rationals on the Chez tower (e.g. (double? 1/2) -> true). +;; Re-assert the native tower-correct versions (predicates.ss) so they win over +;; the overlay defs. int?/double? alias integer?/float?. == is value-equality. +(def-var! "clojure.core" "integer?" jolt-integer?) +(def-var! "clojure.core" "int?" jolt-integer?) +(def-var! "clojure.core" "float?" jolt-float?) +(def-var! "clojure.core" "double?" jolt-float?) +(def-var! "clojure.core" "ratio?" jolt-ratio?) +(def-var! "clojure.core" "rational?" jolt-rational?) +(def-var! "clojure.core" "decimal?" jolt-decimal?) +(def-var! "clojure.core" "==" jolt-num-equiv) diff --git a/host/chez/predicates.ss b/host/chez/predicates.ss index 3e3699d..3fa3350 100644 --- a/host/chez/predicates.ss +++ b/host/chez/predicates.ss @@ -22,8 +22,16 @@ (define (jolt-number? x) (number? x)) (define (jolt-string? x) (string? x)) (define (jolt-char-pred? x) (char? x)) -;; finite integral number — Chez integer? already rejects the infinities and NaN. -(define (jolt-integer? x) (and (number? x) (integer? x))) +;; JVM-parity number-type predicates over the Chez numeric tower. integer? is the +;; INTEGER TYPE (exact integer = Long/BigInt), NOT integer-VALUED: (integer? 3.0) +;; is false on the JVM (3.0 is a Double). float? = flonum (double). ratio? = exact +;; non-integer (= JVM Ratio). rational? = exact (integer or ratio; jolt has no +;; BigDecimal). decimal? is always false (no BigDecimal type). +(define (jolt-integer? x) (and (number? x) (exact? x) (integer? x))) +(define (jolt-float? x) (and (number? x) (flonum? x))) +(define (jolt-ratio? x) (and (number? x) (exact? x) (rational? x) (not (integer? x)))) +(define (jolt-rational? x) (and (number? x) (exact? x))) +(define (jolt-decimal? x) #f) (define (jolt-fn? x) (procedure? x)) (define (jolt-boolean-pred? x) (boolean? x)) @@ -50,6 +58,20 @@ (def-var! "clojure.core" "string?" jolt-string?) (def-var! "clojure.core" "char?" jolt-char-pred?) (def-var! "clojure.core" "integer?" jolt-integer?) +(def-var! "clojure.core" "float?" jolt-float?) +(def-var! "clojure.core" "ratio?" jolt-ratio?) +(def-var! "clojure.core" "rational?" jolt-rational?) +(def-var! "clojure.core" "decimal?" jolt-decimal?) +;; == numeric value-equality (ignores exactness, unlike =): (== 3 3.0) -> true. +;; 1-arity is trivially true; 2+ args must all be numbers (Numbers.equiv throws +;; otherwise). Uses Scheme = (value across the tower), not jolt= (category-aware). +(define (jolt-num-equiv . xs) + (let all-num? ((ys xs)) + (cond + ((null? ys) (or (null? xs) (null? (cdr xs)) (apply = xs))) + ((number? (car ys)) (all-num? (cdr ys))) + (else (error #f "== requires numbers" xs))))) +(def-var! "clojure.core" "==" jolt-num-equiv) (def-var! "clojure.core" "symbol?" jolt-symbol?) (def-var! "clojure.core" "keyword?" keyword?) (def-var! "clojure.core" "map?" jolt-map?) diff --git a/host/chez/reader.ss b/host/chez/reader.ss index 46a06b6..5d71736 100644 --- a/host/chez/reader.ss +++ b/host/chez/reader.ss @@ -73,9 +73,13 @@ ;; jolt models EVERY number as a double (emit-const lowers integer literals to ;; flonums too), so the reader coerces every parsed number to inexact — else a ;; read int (exact) is not jolt= to a source int literal (flonum). +;; Preserve exactness for the Chez numeric tower (JVM parity): integer literals +;; read as exact integers (= Long/BigInt, arbitrary precision), a/b ratios as +;; exact rationals (= Ratio), and decimal/exponent literals as flonums (= double). +;; Only the zero-Janet path (this reader) carries exactness through to runtime; +;; the Janet-reader prelude path stays all-flonum (Janet has only doubles). (define (rdr-try-number tok) - (let ((raw (rdr-try-number-raw tok))) - (and raw (exact->inexact raw)))) + (rdr-try-number-raw tok)) (define (rdr-try-number-raw tok) (let ((len (string-length tok))) @@ -108,12 +112,13 @@ (blen (string-length body)) (slash (rdr-string-index-char body #\/))) (cond - ;; ratio a/b -> flonum (the seed has no exact ratios) + ;; ratio a/b -> exact rational (= JVM Ratio); reduces to an exact integer + ;; when d divides n. (slash (let ((n (string->number (substring body 0 slash))) (d (string->number (substring body (+ slash 1) blen)))) (and (integer? n) (integer? d) (not (= d 0)) - (* sign (exact->inexact (/ n d)))))) + (* sign (/ n d))))) ;; hex 0x.. ((and (>= blen 2) (char=? (string-ref body 0) #\0) (or (char=? (string-ref body 1) #\x) (char=? (string-ref body 1) #\X))) @@ -137,9 +142,8 @@ (and n (exact->inexact (* sign n))))) (else (let ((n (string->number tok))) ; tok carries its own sign - (and (number? n) (real? n) - ;; never surface an exact non-integer ratio - (if (and (exact? n) (not (integer? n))) (exact->inexact n) n))))))) + ;; keep exactness: "42" -> exact int, "3.14"/"1e3" -> flonum. + (and (number? n) (real? n) n)))))) ;; --- string / char literals ------------------------------------------------- (define (rdr-hex->int s i n) ; n hex digits at i -> (values int j) diff --git a/host/chez/records.ss b/host/chez/records.ss index abaa2da..9005665 100644 --- a/host/chez/records.ss +++ b/host/chez/records.ss @@ -66,7 +66,7 @@ ((coll k) (if (jrec? coll) (jrec-lookup coll k jolt-nil) (%r-jolt-get coll k))) ((coll k d) (if (jrec? coll) (jrec-lookup coll k d) (%r-jolt-get coll k d))))) (define %r-jolt-count jolt-count) -(set! jolt-count (lambda (coll) (if (jrec? coll) (exact->inexact (length (jrec-pairs coll))) (%r-jolt-count coll)))) +(set! jolt-count (lambda (coll) (if (jrec? coll) (length (jrec-pairs coll)) (%r-jolt-count coll)))) (define %r-jolt-contains? jolt-contains?) (set! jolt-contains? (lambda (coll k) (if (jrec? coll) (jrec-has? coll k) (%r-jolt-contains? coll k)))) (define %r-jolt-assoc1 jolt-assoc1) diff --git a/host/chez/seed/image.ss b/host/chez/seed/image.ss index fc41a23..0f23d4b 100644 --- a/host/chez/seed/image.ss +++ b/host/chez/seed/image.ss @@ -39,7 +39,7 @@ (guard (e (#t #f)) (def-var! "jolt.ir" "op" (letrec ((op (lambda (node) (let fnrec1497 ((node node)) (jolt-get node (keyword #f "op")))))) op))) (guard (e (#t #f)) - (def-var! "jolt.ir" "map-ir-children" (letrec ((map-ir-children (lambda (f node) (let fnrec1498 ((f f) (node node)) (let* ((op (jolt-get node (keyword #f "op")))) (if (jolt= op (keyword #f "if")) (jolt-assoc node (keyword #f "test") (jolt-invoke f (jolt-get node (keyword #f "test"))) (keyword #f "then") (jolt-invoke f (jolt-get node (keyword #f "then"))) (keyword #f "else") (jolt-invoke f (jolt-get node (keyword #f "else")))) (if (jolt= op (keyword #f "do")) (jolt-assoc node (keyword #f "statements") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "statements"))) (keyword #f "ret") (jolt-invoke f (jolt-get node (keyword #f "ret")))) (if (jolt= op (keyword #f "throw")) (jolt-assoc node (keyword #f "expr") (jolt-invoke f (jolt-get node (keyword #f "expr")))) (if (jolt= op (keyword #f "invoke")) (jolt-assoc node (keyword #f "fn") (jolt-invoke f (jolt-get node (keyword #f "fn"))) (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "vector")) (jolt-assoc node (keyword #f "items") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "items")))) (if (jolt= op (keyword #f "set")) (jolt-assoc node (keyword #f "items") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "items")))) (if (jolt= op (keyword #f "map")) (jolt-assoc node (keyword #f "pairs") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (pr) (let fnrec1506 ((pr pr)) (let* ((_o$1507 (jolt-invoke f (jolt-nth pr 0.0))) (_o$1508 (jolt-invoke f (jolt-nth pr 1.0)))) (jolt-vector _o$1507 _o$1508)))) (jolt-get node (keyword #f "pairs")))) (if (jolt= op (keyword #f "let")) (jolt-assoc node (keyword #f "bindings") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (b) (let fnrec1503 ((b b)) (let* ((_o$1504 (jolt-nth b 0.0)) (_o$1505 (jolt-invoke f (jolt-nth b 1.0)))) (jolt-vector _o$1504 _o$1505)))) (jolt-get node (keyword #f "bindings"))) (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body")))) (if (jolt= op (keyword #f "loop")) (jolt-assoc node (keyword #f "bindings") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (b) (let fnrec1500 ((b b)) (let* ((_o$1501 (jolt-nth b 0.0)) (_o$1502 (jolt-invoke f (jolt-nth b 1.0)))) (jolt-vector _o$1501 _o$1502)))) (jolt-get node (keyword #f "bindings"))) (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body")))) (if (jolt= op (keyword #f "recur")) (jolt-assoc node (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "fn")) (jolt-assoc node (keyword #f "arities") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (a) (let fnrec1499 ((a a)) (jolt-assoc a (keyword #f "body") (jolt-invoke f (jolt-get a (keyword #f "body")))))) (jolt-get node (keyword #f "arities")))) (if (jolt= op (keyword #f "def")) (jolt-assoc node (keyword #f "init") (jolt-invoke f (jolt-get node (keyword #f "init")))) (if (jolt= op (keyword #f "host-call")) (jolt-assoc node (keyword #f "target") (jolt-invoke f (jolt-get node (keyword #f "target"))) (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "host-new")) (jolt-assoc node (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "try")) (let* ((n (jolt-assoc node (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body"))))) (n (if (jolt-truthy? (jolt-get node (keyword #f "catch-body"))) (jolt-assoc n (keyword #f "catch-body") (jolt-invoke f (jolt-get node (keyword #f "catch-body")))) n)) (n (if (jolt-truthy? (jolt-get node (keyword #f "finally"))) (jolt-assoc n (keyword #f "finally") (jolt-invoke f (jolt-get node (keyword #f "finally")))) n))) n) (if (jolt-truthy? (keyword #f "else")) node jolt-nil))))))))))))))))))))) map-ir-children))) + (def-var! "jolt.ir" "map-ir-children" (letrec ((map-ir-children (lambda (f node) (let fnrec1498 ((f f) (node node)) (let* ((op (jolt-get node (keyword #f "op")))) (if (jolt= op (keyword #f "if")) (jolt-assoc node (keyword #f "test") (jolt-invoke f (jolt-get node (keyword #f "test"))) (keyword #f "then") (jolt-invoke f (jolt-get node (keyword #f "then"))) (keyword #f "else") (jolt-invoke f (jolt-get node (keyword #f "else")))) (if (jolt= op (keyword #f "do")) (jolt-assoc node (keyword #f "statements") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "statements"))) (keyword #f "ret") (jolt-invoke f (jolt-get node (keyword #f "ret")))) (if (jolt= op (keyword #f "throw")) (jolt-assoc node (keyword #f "expr") (jolt-invoke f (jolt-get node (keyword #f "expr")))) (if (jolt= op (keyword #f "invoke")) (jolt-assoc node (keyword #f "fn") (jolt-invoke f (jolt-get node (keyword #f "fn"))) (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "vector")) (jolt-assoc node (keyword #f "items") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "items")))) (if (jolt= op (keyword #f "set")) (jolt-assoc node (keyword #f "items") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "items")))) (if (jolt= op (keyword #f "map")) (jolt-assoc node (keyword #f "pairs") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (pr) (let fnrec1506 ((pr pr)) (let* ((_o$1507 (jolt-invoke f (jolt-nth pr 0))) (_o$1508 (jolt-invoke f (jolt-nth pr 1)))) (jolt-vector _o$1507 _o$1508)))) (jolt-get node (keyword #f "pairs")))) (if (jolt= op (keyword #f "let")) (jolt-assoc node (keyword #f "bindings") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (b) (let fnrec1503 ((b b)) (let* ((_o$1504 (jolt-nth b 0)) (_o$1505 (jolt-invoke f (jolt-nth b 1)))) (jolt-vector _o$1504 _o$1505)))) (jolt-get node (keyword #f "bindings"))) (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body")))) (if (jolt= op (keyword #f "loop")) (jolt-assoc node (keyword #f "bindings") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (b) (let fnrec1500 ((b b)) (let* ((_o$1501 (jolt-nth b 0)) (_o$1502 (jolt-invoke f (jolt-nth b 1)))) (jolt-vector _o$1501 _o$1502)))) (jolt-get node (keyword #f "bindings"))) (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body")))) (if (jolt= op (keyword #f "recur")) (jolt-assoc node (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "fn")) (jolt-assoc node (keyword #f "arities") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (a) (let fnrec1499 ((a a)) (jolt-assoc a (keyword #f "body") (jolt-invoke f (jolt-get a (keyword #f "body")))))) (jolt-get node (keyword #f "arities")))) (if (jolt= op (keyword #f "def")) (jolt-assoc node (keyword #f "init") (jolt-invoke f (jolt-get node (keyword #f "init")))) (if (jolt= op (keyword #f "host-call")) (jolt-assoc node (keyword #f "target") (jolt-invoke f (jolt-get node (keyword #f "target"))) (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "host-new")) (jolt-assoc node (keyword #f "args") (jolt-invoke (var-deref "clojure.core" "mapv") f (jolt-get node (keyword #f "args")))) (if (jolt= op (keyword #f "try")) (let* ((n (jolt-assoc node (keyword #f "body") (jolt-invoke f (jolt-get node (keyword #f "body"))))) (n (if (jolt-truthy? (jolt-get node (keyword #f "catch-body"))) (jolt-assoc n (keyword #f "catch-body") (jolt-invoke f (jolt-get node (keyword #f "catch-body")))) n)) (n (if (jolt-truthy? (jolt-get node (keyword #f "finally"))) (jolt-assoc n (keyword #f "finally") (jolt-invoke f (jolt-get node (keyword #f "finally")))) n))) n) (if (jolt-truthy? (keyword #f "else")) node jolt-nil))))))))))))))))))))) map-ir-children))) (guard (e (#t #f)) (declare-var! "jolt.analyzer" "analyze")) (guard (e (#t #f)) @@ -47,7 +47,7 @@ (guard (e (#t #f)) (def-var! "jolt.analyzer" "uncompilable" (letrec ((uncompilable (lambda (why) (let fnrec1522 ((why why)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "jolt/uncompilable: " why)))))) uncompilable))) (guard (e (#t #f)) - (def-var-with-meta! "jolt.analyzer" "gensym-counter" (jolt-invoke (var-deref "clojure.core" "atom") 0.0) (jolt-hash-map (keyword #f "private") #t))) + (def-var-with-meta! "jolt.analyzer" "gensym-counter" (jolt-invoke (var-deref "clojure.core" "atom") 0) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) (def-var! "jolt.analyzer" "gen-name" (letrec ((gen-name (lambda (prefix) (let fnrec1523 ((prefix prefix)) (let* ((n (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "jolt.analyzer" "gensym-counter")))) (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "jolt.analyzer" "gensym-counter") jolt-inc) (jolt-invoke (var-deref "clojure.core" "str") "_r$" prefix n))))))) gen-name))) (guard (e (#t #f)) @@ -65,41 +65,41 @@ (guard (e (#t #f)) (def-var! "jolt.analyzer" "phint-of" (letrec ((phint-of (lambda (ctx sym) (let fnrec1535 ((ctx ctx) (sym sym)) (let* ((m (jolt-invoke (var-deref "jolt.host" "form-sym-meta") sym))) (if (jolt-truthy? m) (let* ((t (jolt-get m (keyword #f "tag")))) (if (jolt-truthy? t) (jolt-invoke (var-deref "jolt.host" "record-ctor-key") ctx t) jolt-nil)) jolt-nil)))))) phint-of))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-seq" (letrec ((analyze-seq (lambda (ctx forms env) (let fnrec1536 ((ctx ctx) (forms forms) (env env)) (let* ((v (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__48_) (let fnrec1537 ((p__48_ p__48_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__48_ env))) forms)) (n (jolt-count v))) (if (jolt-zero? n) (jolt-invoke (var-deref "jolt.ir" "const") jolt-nil) (if (jolt= 1.0 n) (jolt-first v) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "jolt.ir" "do-node") (jolt-invoke (var-deref "clojure.core" "subvec") v 0.0 (jolt-dec n)) (jolt-peek v)) jolt-nil)))))))) analyze-seq))) + (def-var! "jolt.analyzer" "analyze-seq" (letrec ((analyze-seq (lambda (ctx forms env) (let fnrec1536 ((ctx ctx) (forms forms) (env env)) (let* ((v (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__48_) (let fnrec1537 ((p__48_ p__48_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__48_ env))) forms)) (n (jolt-count v))) (if (jolt-zero? n) (jolt-invoke (var-deref "jolt.ir" "const") jolt-nil) (if (jolt= 1 n) (jolt-first v) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "jolt.ir" "do-node") (jolt-invoke (var-deref "clojure.core" "subvec") v 0 (jolt-dec n)) (jolt-peek v)) jolt-nil)))))))) analyze-seq))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-bindings" (letrec ((analyze-bindings (lambda (ctx bvec env) (let fnrec1538 ((ctx ctx) (bvec bvec) (env env)) (let* ((i 0.0) (env env) (pairs (jolt-vector))) (let loop1539 ((i i) (env env) (pairs pairs)) (if (< i (jolt-count bvec)) (let* ((bsym (jolt-nth bvec i))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") bsym)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring binding") jolt-nil) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") bsym)) (init (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth bvec (jolt-inc i)) env))) (loop1539 (+ i 2.0) (jolt-invoke (var-deref "jolt.analyzer" "add-hint") (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env (jolt-vector nm)) nm (jolt-invoke (var-deref "jolt.analyzer" "hint-of") ctx bsym)) (jolt-conj pairs (let* ((_o$1542 nm) (_o$1543 init)) (jolt-vector _o$1542 _o$1543))))))) (let* ((_o$1540 pairs) (_o$1541 env)) (jolt-vector _o$1540 _o$1541))))))))) analyze-bindings))) + (def-var! "jolt.analyzer" "analyze-bindings" (letrec ((analyze-bindings (lambda (ctx bvec env) (let fnrec1538 ((ctx ctx) (bvec bvec) (env env)) (let* ((i 0) (env env) (pairs (jolt-vector))) (let loop1539 ((i i) (env env) (pairs pairs)) (if (< i (jolt-count bvec)) (let* ((bsym (jolt-nth bvec i))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") bsym)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring binding") jolt-nil) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") bsym)) (init (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth bvec (jolt-inc i)) env))) (loop1539 (+ i 2) (jolt-invoke (var-deref "jolt.analyzer" "add-hint") (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env (jolt-vector nm)) nm (jolt-invoke (var-deref "jolt.analyzer" "hint-of") ctx bsym)) (jolt-conj pairs (let* ((_o$1542 nm) (_o$1543 init)) (jolt-vector _o$1542 _o$1543))))))) (let* ((_o$1540 pairs) (_o$1541 env)) (jolt-vector _o$1540 _o$1541))))))))) analyze-bindings))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "parse-params" (letrec ((parse-params (lambda (ctx pvec) (let fnrec1544 ((ctx ctx) (pvec pvec)) (let* ((i 0.0) (fixed (jolt-vector)) (rest-name jolt-nil) (hints (jolt-vector)) (phints (jolt-vector))) (let loop1545 ((i i) (fixed fixed) (rest-name rest-name) (hints hints) (phints phints)) (if (< i (jolt-count pvec)) (let* ((p (jolt-nth pvec i))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") p)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring fn param") jolt-nil) (if (jolt= "&" (jolt-invoke (var-deref "jolt.host" "form-sym-name") p)) (let* ((r (jolt-nth pvec (jolt-inc i)))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") r)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring fn rest") jolt-nil) (loop1545 (+ i 2.0) fixed (jolt-invoke (var-deref "jolt.host" "form-sym-name") r) hints phints))) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") p)) (h (jolt-invoke (var-deref "jolt.analyzer" "hint-of") ctx p)) (ph (jolt-invoke (var-deref "jolt.analyzer" "phint-of") ctx p))) (loop1545 (jolt-inc i) (jolt-conj fixed nm) rest-name (if (jolt-truthy? h) (jolt-conj hints (let* ((_o$1554 nm) (_o$1555 h)) (jolt-vector _o$1554 _o$1555))) hints) (if (jolt-truthy? ph) (jolt-conj phints (let* ((_o$1556 nm) (_o$1557 ph)) (jolt-vector _o$1556 _o$1557))) phints)))))) (let* ((_o$1546 (keyword #f "fixed")) (_o$1547 fixed) (_o$1548 (keyword #f "rest")) (_o$1549 rest-name) (_o$1550 (keyword #f "hints")) (_o$1551 hints) (_o$1552 (keyword #f "phints")) (_o$1553 phints)) (jolt-hash-map _o$1546 _o$1547 _o$1548 _o$1549 _o$1550 _o$1551 _o$1552 _o$1553))))))))) parse-params))) + (def-var! "jolt.analyzer" "parse-params" (letrec ((parse-params (lambda (ctx pvec) (let fnrec1544 ((ctx ctx) (pvec pvec)) (let* ((i 0) (fixed (jolt-vector)) (rest-name jolt-nil) (hints (jolt-vector)) (phints (jolt-vector))) (let loop1545 ((i i) (fixed fixed) (rest-name rest-name) (hints hints) (phints phints)) (if (< i (jolt-count pvec)) (let* ((p (jolt-nth pvec i))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") p)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring fn param") jolt-nil) (if (jolt= "&" (jolt-invoke (var-deref "jolt.host" "form-sym-name") p)) (let* ((r (jolt-nth pvec (jolt-inc i)))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") r)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "destructuring fn rest") jolt-nil) (loop1545 (+ i 2) fixed (jolt-invoke (var-deref "jolt.host" "form-sym-name") r) hints phints))) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") p)) (h (jolt-invoke (var-deref "jolt.analyzer" "hint-of") ctx p)) (ph (jolt-invoke (var-deref "jolt.analyzer" "phint-of") ctx p))) (loop1545 (jolt-inc i) (jolt-conj fixed nm) rest-name (if (jolt-truthy? h) (jolt-conj hints (let* ((_o$1554 nm) (_o$1555 h)) (jolt-vector _o$1554 _o$1555))) hints) (if (jolt-truthy? ph) (jolt-conj phints (let* ((_o$1556 nm) (_o$1557 ph)) (jolt-vector _o$1556 _o$1557))) phints)))))) (let* ((_o$1546 (keyword #f "fixed")) (_o$1547 fixed) (_o$1548 (keyword #f "rest")) (_o$1549 rest-name) (_o$1550 (keyword #f "hints")) (_o$1551 hints) (_o$1552 (keyword #f "phints")) (_o$1553 phints)) (jolt-hash-map _o$1546 _o$1547 _o$1548 _o$1549 _o$1550 _o$1551 _o$1552 _o$1553))))))))) parse-params))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-arity" (letrec ((analyze-arity (lambda (ctx pvec body env fn-name) (let fnrec1558 ((ctx ctx) (pvec pvec) (body body) (env env) (fn-name fn-name)) (let* ((pp (jolt-invoke (var-deref "jolt.analyzer" "parse-params") ctx (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") pvec)))) (fixed (jolt-get pp (keyword #f "fixed"))) (rst (jolt-get pp (keyword #f "rest"))) (rname (jolt-invoke (var-deref "jolt.analyzer" "gen-name") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx) "/" (let* ((or__14__auto fn-name)) (if (jolt-truthy? or__14__auto) or__14__auto "fn")) "--"))) (names (let* ((G__35 (jolt-invoke (var-deref "clojure.core" "vec") fixed))) (let* ((G__36 (if (jolt-truthy? rst) (jolt-conj G__35 rst) G__35))) (let* ((G__37 (if (jolt-truthy? fn-name) (jolt-conj G__36 fn-name) G__36))) G__37)))) (env0 (jolt-invoke (var-deref "jolt.analyzer" "with-recur") (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env names) rname)) (env* (jolt-reduce (lambda (e pr) (let fnrec1559 ((e e) (pr pr)) (jolt-invoke (var-deref "jolt.analyzer" "add-hint") e (jolt-nth pr 0.0) (jolt-nth pr 1.0)))) env0 (jolt-get pp (keyword #f "hints")))) (arity (let* ((_o$1560 (keyword #f "params")) (_o$1561 fixed) (_o$1562 (keyword #f "recur-name")) (_o$1563 rname) (_o$1564 (keyword #f "body")) (_o$1565 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx body env*))) (jolt-hash-map _o$1560 _o$1561 _o$1562 _o$1563 _o$1564 _o$1565))) (arity (if (jolt-truthy? (jolt-seq (jolt-get pp (keyword #f "phints")))) (jolt-assoc arity (keyword #f "phints") (jolt-get pp (keyword #f "phints"))) arity))) (if (jolt-truthy? rst) (jolt-assoc arity (keyword #f "rest") rst) arity)))))) analyze-arity))) + (def-var! "jolt.analyzer" "analyze-arity" (letrec ((analyze-arity (lambda (ctx pvec body env fn-name) (let fnrec1558 ((ctx ctx) (pvec pvec) (body body) (env env) (fn-name fn-name)) (let* ((pp (jolt-invoke (var-deref "jolt.analyzer" "parse-params") ctx (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") pvec)))) (fixed (jolt-get pp (keyword #f "fixed"))) (rst (jolt-get pp (keyword #f "rest"))) (rname (jolt-invoke (var-deref "jolt.analyzer" "gen-name") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx) "/" (let* ((or__14__auto fn-name)) (if (jolt-truthy? or__14__auto) or__14__auto "fn")) "--"))) (names (let* ((G__35 (jolt-invoke (var-deref "clojure.core" "vec") fixed))) (let* ((G__36 (if (jolt-truthy? rst) (jolt-conj G__35 rst) G__35))) (let* ((G__37 (if (jolt-truthy? fn-name) (jolt-conj G__36 fn-name) G__36))) G__37)))) (env0 (jolt-invoke (var-deref "jolt.analyzer" "with-recur") (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env names) rname)) (env* (jolt-reduce (lambda (e pr) (let fnrec1559 ((e e) (pr pr)) (jolt-invoke (var-deref "jolt.analyzer" "add-hint") e (jolt-nth pr 0) (jolt-nth pr 1)))) env0 (jolt-get pp (keyword #f "hints")))) (arity (let* ((_o$1560 (keyword #f "params")) (_o$1561 fixed) (_o$1562 (keyword #f "recur-name")) (_o$1563 rname) (_o$1564 (keyword #f "body")) (_o$1565 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx body env*))) (jolt-hash-map _o$1560 _o$1561 _o$1562 _o$1563 _o$1564 _o$1565))) (arity (if (jolt-truthy? (jolt-seq (jolt-get pp (keyword #f "phints")))) (jolt-assoc arity (keyword #f "phints") (jolt-get pp (keyword #f "phints"))) arity))) (if (jolt-truthy? rst) (jolt-assoc arity (keyword #f "rest") rst) arity)))))) analyze-arity))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "strip-arglist-meta" (letrec ((strip-arglist-meta (lambda (form) (let fnrec1566 ((form form)) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") form)) (let* ((es (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") form)))) (if (jolt-truthy? (let* ((and__13__auto (jolt= 3.0 (jolt-count es)))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-first es)))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "with-meta" (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first es))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-vec?") (jolt-nth es 1.0)) and__13__auto)) and__13__auto)) and__13__auto))) (jolt-nth es 1.0) form)) form))))) strip-arglist-meta))) + (def-var! "jolt.analyzer" "strip-arglist-meta" (letrec ((strip-arglist-meta (lambda (form) (let fnrec1566 ((form form)) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") form)) (let* ((es (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") form)))) (if (jolt-truthy? (let* ((and__13__auto (jolt= 3 (jolt-count es)))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-first es)))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "with-meta" (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first es))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-vec?") (jolt-nth es 1)) and__13__auto)) and__13__auto)) and__13__auto))) (jolt-nth es 1) form)) form))))) strip-arglist-meta))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-fn" (letrec ((analyze-fn (lambda (ctx items env) (let fnrec1567 ((ctx ctx) (items items) (env env)) (let* ((named (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth items 1.0))) (fn-name (if (jolt-truthy? named) (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth items 1.0)) jolt-nil)) (rest-items (if (jolt-truthy? named) (jolt-drop 2.0 items) (jolt-drop 1.0 items))) (first* (jolt-invoke (var-deref "jolt.analyzer" "strip-arglist-meta") (jolt-first rest-items)))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-vec?") first*)) (jolt-invoke (var-deref "jolt.ir" "fn-node") fn-name (jolt-vector (jolt-invoke (var-deref "jolt.analyzer" "analyze-arity") ctx first* (jolt-rest rest-items) env fn-name))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") first*)) (jolt-invoke (var-deref "jolt.ir" "fn-node") fn-name (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (clause) (let fnrec1568 ((clause clause)) (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") clause)))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-arity") ctx (jolt-invoke (var-deref "jolt.analyzer" "strip-arglist-meta") (jolt-first cl)) (jolt-rest cl) env fn-name)))) rest-items)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "fn: bad params") jolt-nil)))))))) analyze-fn))) + (def-var! "jolt.analyzer" "analyze-fn" (letrec ((analyze-fn (lambda (ctx items env) (let fnrec1567 ((ctx ctx) (items items) (env env)) (let* ((named (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth items 1))) (fn-name (if (jolt-truthy? named) (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth items 1)) jolt-nil)) (rest-items (if (jolt-truthy? named) (jolt-drop 2 items) (jolt-drop 1 items))) (first* (jolt-invoke (var-deref "jolt.analyzer" "strip-arglist-meta") (jolt-first rest-items)))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-vec?") first*)) (jolt-invoke (var-deref "jolt.ir" "fn-node") fn-name (jolt-vector (jolt-invoke (var-deref "jolt.analyzer" "analyze-arity") ctx first* (jolt-rest rest-items) env fn-name))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") first*)) (jolt-invoke (var-deref "jolt.ir" "fn-node") fn-name (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (clause) (let fnrec1568 ((clause clause)) (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") clause)))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-arity") ctx (jolt-invoke (var-deref "jolt.analyzer" "strip-arglist-meta") (jolt-first cl)) (jolt-rest cl) env fn-name)))) rest-items)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "fn: bad params") jolt-nil)))))))) analyze-fn))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-try" (letrec ((analyze-try (lambda (ctx items env) (let fnrec1569 ((ctx ctx) (items items) (env env)) (let* ((clauses (jolt-rest items)) (body (jolt-invoke (var-deref "clojure.core" "atom") (jolt-vector))) (catch-sym (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil)) (catch-body (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil)) (finally-body (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil))) (begin (begin (jolt-count (jolt-map (lambda (c) (let fnrec1574 ((c c)) (begin (let* ((head (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") c)) (jolt-first (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c))) jolt-nil)) (hname (if (jolt-truthy? (let* ((and__13__auto head)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-sym?") head) and__13__auto))) (jolt-invoke (var-deref "jolt.host" "form-sym-name") head) jolt-nil))) (if (jolt= hname "catch") (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c)))) (begin (if (jolt-truthy? (let* ((or__14__auto (< (jolt-count cl) 3.0))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth cl 2.0)))))) (jolt-throw "Unable to parse catch clause; expected (catch class binding body*)") jolt-nil) (jolt-invoke (var-deref "clojure.core" "reset!") catch-sym (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth cl 2.0))) (jolt-invoke (var-deref "clojure.core" "reset!") catch-body (jolt-drop 3.0 cl)))) (if (jolt= hname "finally") (jolt-invoke (var-deref "clojure.core" "reset!") finally-body (jolt-rest (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c)))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "swap!") body jolt-conj c) jolt-nil)))) jolt-nil))) clauses)) jolt-nil) (let* ((n (let* ((_o$1570 (keyword #f "op")) (_o$1571 (keyword #f "try")) (_o$1572 (keyword #f "body")) (_o$1573 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") body) env))) (jolt-hash-map _o$1570 _o$1571 _o$1572 _o$1573))) (n (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") catch-body)) (jolt-assoc n (keyword #f "catch-sym") (jolt-invoke (var-deref "clojure.core" "deref") catch-sym) (keyword #f "catch-body") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") catch-body) (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env (jolt-vector (jolt-invoke (var-deref "clojure.core" "deref") catch-sym))))) n)) (n (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") finally-body)) (jolt-assoc n (keyword #f "finally") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") finally-body) env)) n))) n))))))) analyze-try))) + (def-var! "jolt.analyzer" "analyze-try" (letrec ((analyze-try (lambda (ctx items env) (let fnrec1569 ((ctx ctx) (items items) (env env)) (let* ((clauses (jolt-rest items)) (body (jolt-invoke (var-deref "clojure.core" "atom") (jolt-vector))) (catch-sym (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil)) (catch-body (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil)) (finally-body (jolt-invoke (var-deref "clojure.core" "atom") jolt-nil))) (begin (begin (jolt-count (jolt-map (lambda (c) (let fnrec1574 ((c c)) (begin (let* ((head (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") c)) (jolt-first (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c))) jolt-nil)) (hname (if (jolt-truthy? (let* ((and__13__auto head)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-sym?") head) and__13__auto))) (jolt-invoke (var-deref "jolt.host" "form-sym-name") head) jolt-nil))) (if (jolt= hname "catch") (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c)))) (begin (if (jolt-truthy? (let* ((or__14__auto (< (jolt-count cl) 3))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth cl 2)))))) (jolt-throw "Unable to parse catch clause; expected (catch class binding body*)") jolt-nil) (jolt-invoke (var-deref "clojure.core" "reset!") catch-sym (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth cl 2))) (jolt-invoke (var-deref "clojure.core" "reset!") catch-body (jolt-drop 3 cl)))) (if (jolt= hname "finally") (jolt-invoke (var-deref "clojure.core" "reset!") finally-body (jolt-rest (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") c)))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "swap!") body jolt-conj c) jolt-nil)))) jolt-nil))) clauses)) jolt-nil) (let* ((n (let* ((_o$1570 (keyword #f "op")) (_o$1571 (keyword #f "try")) (_o$1572 (keyword #f "body")) (_o$1573 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") body) env))) (jolt-hash-map _o$1570 _o$1571 _o$1572 _o$1573))) (n (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") catch-body)) (jolt-assoc n (keyword #f "catch-sym") (jolt-invoke (var-deref "clojure.core" "deref") catch-sym) (keyword #f "catch-body") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") catch-body) (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env (jolt-vector (jolt-invoke (var-deref "clojure.core" "deref") catch-sym))))) n)) (n (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") finally-body)) (jolt-assoc n (keyword #f "finally") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-invoke (var-deref "clojure.core" "deref") finally-body) env)) n))) n))))))) analyze-try))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-letfn" (letrec ((analyze-letfn (lambda (ctx items env) (let fnrec1575 ((ctx ctx) (items items) (env env)) (let* ((specs (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1.0)))) (names (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__49_) (let fnrec1584 ((p__49_ p__49_)) (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") p__49_)))))) specs)) (env* (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env names)) (binds (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (spec) (let fnrec1585 ((spec spec)) (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") spec)))) (let* ((_o$1586 (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first cl))) (_o$1587 (jolt-invoke (var-deref "jolt.analyzer" "analyze-fn") ctx (jolt-invoke (var-deref "clojure.core" "vec") (jolt-cons (jolt-first cl) cl)) env*))) (jolt-vector _o$1586 _o$1587))))) specs))) (let* ((_o$1576 (keyword #f "op")) (_o$1577 (keyword #f "let")) (_o$1578 (keyword #f "letrec")) (_o$1579 #t) (_o$1580 (keyword #f "bindings")) (_o$1581 binds) (_o$1582 (keyword #f "body")) (_o$1583 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2.0 items) env*))) (jolt-hash-map _o$1576 _o$1577 _o$1578 _o$1579 _o$1580 _o$1581 _o$1582 _o$1583))))))) analyze-letfn))) + (def-var! "jolt.analyzer" "analyze-letfn" (letrec ((analyze-letfn (lambda (ctx items env) (let fnrec1575 ((ctx ctx) (items items) (env env)) (let* ((specs (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1)))) (names (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__49_) (let fnrec1584 ((p__49_ p__49_)) (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") p__49_)))))) specs)) (env* (jolt-invoke (var-deref "jolt.analyzer" "add-locals") env names)) (binds (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (spec) (let fnrec1585 ((spec spec)) (let* ((cl (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") spec)))) (let* ((_o$1586 (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-first cl))) (_o$1587 (jolt-invoke (var-deref "jolt.analyzer" "analyze-fn") ctx (jolt-invoke (var-deref "clojure.core" "vec") (jolt-cons (jolt-first cl) cl)) env*))) (jolt-vector _o$1586 _o$1587))))) specs))) (let* ((_o$1576 (keyword #f "op")) (_o$1577 (keyword #f "let")) (_o$1578 (keyword #f "letrec")) (_o$1579 #t) (_o$1580 (keyword #f "bindings")) (_o$1581 binds) (_o$1582 (keyword #f "body")) (_o$1583 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2 items) env*))) (jolt-hash-map _o$1576 _o$1577 _o$1578 _o$1579 _o$1580 _o$1581 _o$1582 _o$1583))))))) analyze-letfn))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-special" (letrec ((analyze-special (lambda (ctx op items env) (let fnrec1588 ((ctx ctx) (op op) (items items) (env env)) (let* ((G__38 op)) (if (jolt= G__38 "quote") (jolt-invoke (var-deref "jolt.ir" "quote-node") (jolt-invoke (var-deref "clojure.core" "second") items)) (if (jolt= G__38 "if") (begin (if (jolt-truthy? (let* ((or__14__auto (< (jolt-count items) 3.0))) (if (jolt-truthy? or__14__auto) or__14__auto (> (jolt-count items) 4.0)))) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Wrong number of args (" (jolt-dec (jolt-count items)) ") passed to: if")) jolt-nil) (jolt-invoke (var-deref "jolt.ir" "if-node") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1.0) env) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 2.0) env) (if (> (jolt-count items) 3.0) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 3.0) env) (jolt-invoke (var-deref "jolt.ir" "const") jolt-nil)))) (if (jolt= G__38 "do") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-rest items) env) (if (jolt= G__38 "throw") (jolt-invoke (var-deref "jolt.ir" "throw-node") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1.0) env)) (if (jolt= G__38 "def") (let* ((name-sym (jolt-nth items 1.0))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") name-sym)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "def name with map metadata") jolt-nil) (if (< (jolt-count items) 3.0) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") name-sym)) (cur (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx))) (begin (jolt-invoke (var-deref "jolt.host" "host-intern!") ctx cur nm) (let* ((_o$1604 (keyword #f "op")) (_o$1605 (keyword #f "def")) (_o$1606 (keyword #f "ns")) (_o$1607 cur) (_o$1608 (keyword #f "name")) (_o$1609 nm) (_o$1610 (keyword #f "no-init")) (_o$1611 #t)) (jolt-hash-map _o$1604 _o$1605 _o$1606 _o$1607 _o$1608 _o$1609 _o$1610 _o$1611)))) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") name-sym)) (cur (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx)) (has-doc (let* ((and__13__auto (> (jolt-count items) 3.0))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "string?") (jolt-nth items 2.0)) and__13__auto))) (val-form (jolt-nth items (if (jolt-truthy? has-doc) 3.0 2.0))) (base-meta (let* ((or__14__auto (jolt-invoke (var-deref "jolt.host" "form-sym-meta") name-sym))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-hash-map)))) (node-meta (if (jolt-truthy? has-doc) (jolt-assoc base-meta (keyword #f "doc") (jolt-nth items 2.0)) base-meta))) (begin (jolt-invoke (var-deref "jolt.host" "host-intern!") ctx cur nm) (jolt-invoke (var-deref "jolt.ir" "def-node") cur nm (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx val-form env) node-meta)))))) (if (jolt= G__38 "let*") (let* ((bvec (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1.0)))) (r (jolt-invoke (var-deref "jolt.analyzer" "analyze-bindings") ctx bvec env))) (jolt-invoke (var-deref "jolt.ir" "let-node") (jolt-first r) (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2.0 items) (jolt-invoke (var-deref "clojure.core" "second") r)))) (if (jolt= G__38 "loop*") (let* ((bvec (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1.0)))) (rname (jolt-invoke (var-deref "jolt.analyzer" "gen-name") "loop")) (r (jolt-invoke (var-deref "jolt.analyzer" "analyze-bindings") ctx bvec env)) (env** (jolt-invoke (var-deref "jolt.analyzer" "with-recur") (jolt-invoke (var-deref "clojure.core" "second") r) rname))) (let* ((_o$1596 (keyword #f "op")) (_o$1597 (keyword #f "loop")) (_o$1598 (keyword #f "recur-name")) (_o$1599 rname) (_o$1600 (keyword #f "bindings")) (_o$1601 (jolt-first r)) (_o$1602 (keyword #f "body")) (_o$1603 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2.0 items) env**))) (jolt-hash-map _o$1596 _o$1597 _o$1598 _o$1599 _o$1600 _o$1601 _o$1602 _o$1603))) (if (jolt= G__38 "recur") (let* ((rt (jolt-get env (keyword #f "recur")))) (begin (if (jolt-not rt) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "recur outside loop/fn") jolt-nil) (let* ((_o$1590 (keyword #f "op")) (_o$1591 (keyword #f "recur")) (_o$1592 (keyword #f "recur-name")) (_o$1593 rt) (_o$1594 (keyword #f "args")) (_o$1595 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__50_) (let fnrec1589 ((p__50_ p__50_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__50_ env))) (jolt-rest items)))) (jolt-hash-map _o$1590 _o$1591 _o$1592 _o$1593 _o$1594 _o$1595)))) (if (jolt= G__38 "try") (jolt-invoke (var-deref "jolt.analyzer" "analyze-try") ctx items env) (if (jolt= G__38 "letfn") (jolt-invoke (var-deref "jolt.analyzer" "analyze-letfn") ctx items env) (if (jolt= G__38 "fn*") (jolt-invoke (var-deref "jolt.analyzer" "analyze-fn") ctx items env) (if (jolt= G__38 "syntax-quote") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-invoke (var-deref "jolt.host" "form-syntax-quote-lower") ctx (jolt-invoke (var-deref "clojure.core" "second") items)) env) (if (jolt= G__38 "var") (let* ((sym (jolt-invoke (var-deref "clojure.core" "second") items)) (r (jolt-invoke (var-deref "jolt.host" "resolve-global") ctx sym))) (if (jolt= (keyword #f "var") (jolt-get r (keyword #f "kind"))) (jolt-invoke (var-deref "jolt.ir" "the-var") (jolt-get r (keyword #f "ns")) (jolt-get r (keyword #f "name"))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "var of non-var " (jolt-invoke (var-deref "jolt.host" "form-sym-name") sym))))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "special form " op)))))))))))))))))))) analyze-special))) + (def-var! "jolt.analyzer" "analyze-special" (letrec ((analyze-special (lambda (ctx op items env) (let fnrec1588 ((ctx ctx) (op op) (items items) (env env)) (let* ((G__38 op)) (if (jolt= G__38 "quote") (jolt-invoke (var-deref "jolt.ir" "quote-node") (jolt-invoke (var-deref "clojure.core" "second") items)) (if (jolt= G__38 "if") (begin (if (jolt-truthy? (let* ((or__14__auto (< (jolt-count items) 3))) (if (jolt-truthy? or__14__auto) or__14__auto (> (jolt-count items) 4)))) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Wrong number of args (" (jolt-dec (jolt-count items)) ") passed to: if")) jolt-nil) (jolt-invoke (var-deref "jolt.ir" "if-node") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1) env) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 2) env) (if (> (jolt-count items) 3) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 3) env) (jolt-invoke (var-deref "jolt.ir" "const") jolt-nil)))) (if (jolt= G__38 "do") (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-rest items) env) (if (jolt= G__38 "throw") (jolt-invoke (var-deref "jolt.ir" "throw-node") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1) env)) (if (jolt= G__38 "def") (let* ((name-sym (jolt-nth items 1))) (begin (if (jolt-not (jolt-invoke (var-deref "jolt.host" "form-sym?") name-sym)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "def name with map metadata") jolt-nil) (if (< (jolt-count items) 3) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") name-sym)) (cur (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx))) (begin (jolt-invoke (var-deref "jolt.host" "host-intern!") ctx cur nm) (let* ((_o$1604 (keyword #f "op")) (_o$1605 (keyword #f "def")) (_o$1606 (keyword #f "ns")) (_o$1607 cur) (_o$1608 (keyword #f "name")) (_o$1609 nm) (_o$1610 (keyword #f "no-init")) (_o$1611 #t)) (jolt-hash-map _o$1604 _o$1605 _o$1606 _o$1607 _o$1608 _o$1609 _o$1610 _o$1611)))) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") name-sym)) (cur (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx)) (has-doc (let* ((and__13__auto (> (jolt-count items) 3))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "string?") (jolt-nth items 2)) and__13__auto))) (val-form (jolt-nth items (if (jolt-truthy? has-doc) 3 2))) (base-meta (let* ((or__14__auto (jolt-invoke (var-deref "jolt.host" "form-sym-meta") name-sym))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-hash-map)))) (node-meta (if (jolt-truthy? has-doc) (jolt-assoc base-meta (keyword #f "doc") (jolt-nth items 2)) base-meta))) (begin (jolt-invoke (var-deref "jolt.host" "host-intern!") ctx cur nm) (jolt-invoke (var-deref "jolt.ir" "def-node") cur nm (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx val-form env) node-meta)))))) (if (jolt= G__38 "let*") (let* ((bvec (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1)))) (r (jolt-invoke (var-deref "jolt.analyzer" "analyze-bindings") ctx bvec env))) (jolt-invoke (var-deref "jolt.ir" "let-node") (jolt-first r) (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2 items) (jolt-invoke (var-deref "clojure.core" "second") r)))) (if (jolt= G__38 "loop*") (let* ((bvec (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-vec-items") (jolt-nth items 1)))) (rname (jolt-invoke (var-deref "jolt.analyzer" "gen-name") "loop")) (r (jolt-invoke (var-deref "jolt.analyzer" "analyze-bindings") ctx bvec env)) (env** (jolt-invoke (var-deref "jolt.analyzer" "with-recur") (jolt-invoke (var-deref "clojure.core" "second") r) rname))) (let* ((_o$1596 (keyword #f "op")) (_o$1597 (keyword #f "loop")) (_o$1598 (keyword #f "recur-name")) (_o$1599 rname) (_o$1600 (keyword #f "bindings")) (_o$1601 (jolt-first r)) (_o$1602 (keyword #f "body")) (_o$1603 (jolt-invoke (var-deref "jolt.analyzer" "analyze-seq") ctx (jolt-drop 2 items) env**))) (jolt-hash-map _o$1596 _o$1597 _o$1598 _o$1599 _o$1600 _o$1601 _o$1602 _o$1603))) (if (jolt= G__38 "recur") (let* ((rt (jolt-get env (keyword #f "recur")))) (begin (if (jolt-not rt) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "recur outside loop/fn") jolt-nil) (let* ((_o$1590 (keyword #f "op")) (_o$1591 (keyword #f "recur")) (_o$1592 (keyword #f "recur-name")) (_o$1593 rt) (_o$1594 (keyword #f "args")) (_o$1595 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__50_) (let fnrec1589 ((p__50_ p__50_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__50_ env))) (jolt-rest items)))) (jolt-hash-map _o$1590 _o$1591 _o$1592 _o$1593 _o$1594 _o$1595)))) (if (jolt= G__38 "try") (jolt-invoke (var-deref "jolt.analyzer" "analyze-try") ctx items env) (if (jolt= G__38 "letfn") (jolt-invoke (var-deref "jolt.analyzer" "analyze-letfn") ctx items env) (if (jolt= G__38 "fn*") (jolt-invoke (var-deref "jolt.analyzer" "analyze-fn") ctx items env) (if (jolt= G__38 "syntax-quote") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-invoke (var-deref "jolt.host" "form-syntax-quote-lower") ctx (jolt-invoke (var-deref "clojure.core" "second") items)) env) (if (jolt= G__38 "var") (let* ((sym (jolt-invoke (var-deref "clojure.core" "second") items)) (r (jolt-invoke (var-deref "jolt.host" "resolve-global") ctx sym))) (if (jolt= (keyword #f "var") (jolt-get r (keyword #f "kind"))) (jolt-invoke (var-deref "jolt.ir" "the-var") (jolt-get r (keyword #f "ns")) (jolt-get r (keyword #f "name"))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "var of non-var " (jolt-invoke (var-deref "jolt.host" "form-sym-name") sym))))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "special form " op)))))))))))))))))))) analyze-special))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "method-head?" (letrec ((method-head? (lambda (nm) (let fnrec1612 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 1.0))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm 0.0 1.0)))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt= "-" (jolt-invoke (var-deref "clojure.core" "subs") nm 1.0 2.0))) and__13__auto)) and__13__auto)))))) method-head?))) + (def-var! "jolt.analyzer" "method-head?" (letrec ((method-head? (lambda (nm) (let fnrec1612 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 1))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm 0 1)))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt= "-" (jolt-invoke (var-deref "clojure.core" "subs") nm 1 2))) and__13__auto)) and__13__auto)))))) method-head?))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-host-call" (letrec ((analyze-host-call (lambda (ctx hname items env) (let fnrec1613 ((ctx ctx) (hname hname) (items items) (env env)) (begin (if (< (jolt-count items) 2.0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed member expression, expecting (.method target ...): " hname)) jolt-nil) (let* ((_o$1615 (keyword #f "op")) (_o$1616 (keyword #f "host-call")) (_o$1617 (keyword #f "method")) (_o$1618 (jolt-invoke (var-deref "clojure.core" "subs") hname 1.0)) (_o$1619 (keyword #f "target")) (_o$1620 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1.0) env)) (_o$1621 (keyword #f "args")) (_o$1622 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__51_) (let fnrec1614 ((p__51_ p__51_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__51_ env))) (jolt-drop 2.0 items)))) (jolt-hash-map _o$1615 _o$1616 _o$1617 _o$1618 _o$1619 _o$1620 _o$1621 _o$1622))))))) analyze-host-call))) + (def-var! "jolt.analyzer" "analyze-host-call" (letrec ((analyze-host-call (lambda (ctx hname items env) (let fnrec1613 ((ctx ctx) (hname hname) (items items) (env env)) (begin (if (< (jolt-count items) 2) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed member expression, expecting (.method target ...): " hname)) jolt-nil) (let* ((_o$1615 (keyword #f "op")) (_o$1616 (keyword #f "host-call")) (_o$1617 (keyword #f "method")) (_o$1618 (jolt-invoke (var-deref "clojure.core" "subs") hname 1)) (_o$1619 (keyword #f "target")) (_o$1620 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1) env)) (_o$1621 (keyword #f "args")) (_o$1622 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__51_) (let fnrec1614 ((p__51_ p__51_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__51_ env))) (jolt-drop 2 items)))) (jolt-hash-map _o$1615 _o$1616 _o$1617 _o$1618 _o$1619 _o$1620 _o$1621 _o$1622))))))) analyze-host-call))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "ctor-head?" (letrec ((ctor-head? (lambda (nm) (let fnrec1623 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 1.0))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm (jolt-dec (jolt-count nm)) (jolt-count nm))))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm 0.0 1.0))) and__13__auto)) and__13__auto)))))) ctor-head?))) + (def-var! "jolt.analyzer" "ctor-head?" (letrec ((ctor-head? (lambda (nm) (let fnrec1623 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 1))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm (jolt-dec (jolt-count nm)) (jolt-count nm))))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt= "." (jolt-invoke (var-deref "clojure.core" "subs") nm 0 1))) and__13__auto)) and__13__auto)))))) ctor-head?))) (guard (e (#t #f)) (def-var! "jolt.analyzer" "analyze-ctor" (letrec ((analyze-ctor (lambda (ctx class args env) (let fnrec1624 ((ctx ctx) (class class) (args args) (env env)) (jolt-invoke (var-deref "jolt.ir" "host-new") class (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__52_) (let fnrec1625 ((p__52_ p__52_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__52_ env))) args)))))) analyze-ctor))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-dot" (letrec ((analyze-dot (lambda (ctx items env) (let fnrec1626 ((ctx ctx) (items items) (env env)) (begin (if (< (jolt-count items) 3.0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed (. target member ...) form")) jolt-nil) (let* ((member (jolt-nth items 2.0))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-sym?") member)) (let* ((_o$1628 (keyword #f "op")) (_o$1629 (keyword #f "host-call")) (_o$1630 (keyword #f "method")) (_o$1631 (jolt-invoke (var-deref "jolt.host" "form-sym-name") member)) (_o$1632 (keyword #f "target")) (_o$1633 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1.0) env)) (_o$1634 (keyword #f "args")) (_o$1635 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__53_) (let fnrec1627 ((p__53_ p__53_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__53_ env))) (jolt-drop 3.0 items)))) (jolt-hash-map _o$1628 _o$1629 _o$1630 _o$1631 _o$1632 _o$1633 _o$1634 _o$1635)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "special form . (non-symbol member)")))))))) analyze-dot))) + (def-var! "jolt.analyzer" "analyze-dot" (letrec ((analyze-dot (lambda (ctx items env) (let fnrec1626 ((ctx ctx) (items items) (env env)) (begin (if (< (jolt-count items) 3) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed (. target member ...) form")) jolt-nil) (let* ((member (jolt-nth items 2))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-sym?") member)) (let* ((_o$1628 (keyword #f "op")) (_o$1629 (keyword #f "host-call")) (_o$1630 (keyword #f "method")) (_o$1631 (jolt-invoke (var-deref "jolt.host" "form-sym-name") member)) (_o$1632 (keyword #f "target")) (_o$1633 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1) env)) (_o$1634 (keyword #f "args")) (_o$1635 (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__53_) (let fnrec1627 ((p__53_ p__53_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__53_ env))) (jolt-drop 3 items)))) (jolt-hash-map _o$1628 _o$1629 _o$1630 _o$1631 _o$1632 _o$1633 _o$1634 _o$1635)) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "special form . (non-symbol member)")))))))) analyze-dot))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "field-head?" (letrec ((field-head? (lambda (nm) (let fnrec1636 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 2.0))) (if (jolt-truthy? and__13__auto) (jolt= ".-" (jolt-invoke (var-deref "clojure.core" "subs") nm 0.0 2.0)) and__13__auto)))))) field-head?))) + (def-var! "jolt.analyzer" "field-head?" (letrec ((field-head? (lambda (nm) (let fnrec1636 ((nm nm)) (let* ((and__13__auto (> (jolt-count nm) 2))) (if (jolt-truthy? and__13__auto) (jolt= ".-" (jolt-invoke (var-deref "clojure.core" "subs") nm 0 2)) and__13__auto)))))) field-head?))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-field" (letrec ((analyze-field (lambda (ctx hname items env) (let fnrec1637 ((ctx ctx) (hname hname) (items items) (env env)) (begin (if (< (jolt-count items) 2.0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed (.-field target) form")) jolt-nil) (let* ((_o$1638 (keyword #f "op")) (_o$1639 (keyword #f "host-call")) (_o$1640 (keyword #f "method")) (_o$1641 (jolt-invoke (var-deref "clojure.core" "subs") hname 1.0)) (_o$1642 (keyword #f "target")) (_o$1643 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1.0) env)) (_o$1644 (keyword #f "args")) (_o$1645 (jolt-vector))) (jolt-hash-map _o$1638 _o$1639 _o$1640 _o$1641 _o$1642 _o$1643 _o$1644 _o$1645))))))) analyze-field))) + (def-var! "jolt.analyzer" "analyze-field" (letrec ((analyze-field (lambda (ctx hname items env) (let fnrec1637 ((ctx ctx) (hname hname) (items items) (env env)) (begin (if (< (jolt-count items) 2) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Malformed (.-field target) form")) jolt-nil) (let* ((_o$1638 (keyword #f "op")) (_o$1639 (keyword #f "host-call")) (_o$1640 (keyword #f "method")) (_o$1641 (jolt-invoke (var-deref "clojure.core" "subs") hname 1)) (_o$1642 (keyword #f "target")) (_o$1643 (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-nth items 1) env)) (_o$1644 (keyword #f "args")) (_o$1645 (jolt-vector))) (jolt-hash-map _o$1638 _o$1639 _o$1640 _o$1641 _o$1642 _o$1643 _o$1644 _o$1645))))))) analyze-field))) (guard (e (#t #f)) (def-var! "jolt.analyzer" "analyze-symbol" (letrec ((analyze-symbol (lambda (ctx form env) (let fnrec1646 ((ctx ctx) (form form) (env env)) (let* ((nm (jolt-invoke (var-deref "jolt.host" "form-sym-name") form)) (ns (jolt-invoke (var-deref "jolt.host" "form-sym-ns") form))) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "nil?") ns))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "local?") env nm) and__13__auto))) (let* ((h (jolt-get (jolt-get env (keyword #f "hints")) nm))) (if (jolt-truthy? h) (jolt-assoc (jolt-invoke (var-deref "jolt.ir" "local") nm) (keyword #f "hint") h) (jolt-invoke (var-deref "jolt.ir" "local") nm))) (if (jolt-truthy? ns) (let* ((r (jolt-invoke (var-deref "jolt.host" "resolve-global") ctx form))) (if (jolt= (keyword #f "var") (jolt-get r (keyword #f "kind"))) (jolt-invoke (var-deref "jolt.ir" "var-ref") (jolt-get r (keyword #f "ns")) (jolt-get r (keyword #f "name"))) (jolt-invoke (var-deref "jolt.ir" "host-static") ns nm))) (if (jolt-truthy? (keyword #f "else")) (let* ((r (jolt-invoke (var-deref "jolt.host" "resolve-global") ctx form))) (let* ((G__39 (jolt-get r (keyword #f "kind")))) (if (jolt= G__39 (keyword #f "var")) (jolt-invoke (var-deref "jolt.ir" "var-ref") (jolt-get r (keyword #f "ns")) (jolt-get r (keyword #f "name"))) (if (jolt= G__39 (keyword #f "host")) (jolt-invoke (var-deref "jolt.ir" "host-ref") (jolt-get r (keyword #f "name"))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "late-bind?") ctx)) (jolt-invoke (var-deref "jolt.ir" "var-ref") (jolt-invoke (var-deref "jolt.host" "compile-ns") ctx) nm) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "Unable to resolve symbol: " nm " in this context"))))))) jolt-nil)))))))) analyze-symbol))) (guard (e (#t #f)) - (def-var! "jolt.analyzer" "analyze-list" (letrec ((analyze-list (lambda (ctx form env) (let fnrec1647 ((ctx ctx) (form form) (env env)) (let* ((items (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") form)))) (if (jolt-zero? (jolt-count items)) (jolt-invoke (var-deref "jolt.ir" "quote-node") form) (let* ((head (jolt-first items)) (hname (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") head))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "jolt.host" "form-sym-ns") head)) and__13__auto))) (jolt-invoke (var-deref "jolt.host" "form-sym-name") head) jolt-nil)) (shadowed (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "local?") env hname) and__13__auto)))) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-contains? (var-deref "jolt.analyzer" "handled") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-special") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "method-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-host-call") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "ctor-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-ctor") ctx (jolt-invoke (var-deref "clojure.core" "subs") hname 0.0 (jolt-dec (jolt-count hname))) (jolt-rest items) env) (if (jolt-truthy? (let* ((and__13__auto (jolt= hname "new"))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (>= (jolt-count items) 2.0))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth items 1.0)) and__13__auto)) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-ctor") ctx (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth items 1.0)) (jolt-drop 2.0 items) env) (if (jolt-truthy? (let* ((and__13__auto (jolt= hname "."))) (if (jolt-truthy? and__13__auto) (jolt-not shadowed) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-dot") ctx items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "field-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-field") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-special?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "special form " hname)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") head))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-macro?") ctx head) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-invoke (var-deref "jolt.host" "form-expand-1") ctx form) env) (if (jolt-truthy? (keyword #f "else")) (let* ((n (jolt-invoke (var-deref "jolt.ir" "invoke") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx head env) (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__54_) (let fnrec1648 ((p__54_ p__54_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__54_ env))) (jolt-rest items)))) (p (jolt-invoke (var-deref "jolt.host" "form-position") form))) (if (jolt-truthy? p) (jolt-assoc n (keyword #f "pos") p) n)) jolt-nil)))))))))))))))) analyze-list))) + (def-var! "jolt.analyzer" "analyze-list" (letrec ((analyze-list (lambda (ctx form env) (let fnrec1647 ((ctx ctx) (form form) (env env)) (let* ((items (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "jolt.host" "form-elements") form)))) (if (jolt-zero? (jolt-count items)) (jolt-invoke (var-deref "jolt.ir" "quote-node") form) (let* ((head (jolt-first items)) (hname (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") head))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "jolt.host" "form-sym-ns") head)) and__13__auto))) (jolt-invoke (var-deref "jolt.host" "form-sym-name") head) jolt-nil)) (shadowed (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "local?") env hname) and__13__auto)))) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-contains? (var-deref "jolt.analyzer" "handled") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-special") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "method-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-host-call") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "ctor-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-ctor") ctx (jolt-invoke (var-deref "clojure.core" "subs") hname 0 (jolt-dec (jolt-count hname))) (jolt-rest items) env) (if (jolt-truthy? (let* ((and__13__auto (jolt= hname "new"))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (>= (jolt-count items) 2))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-sym?") (jolt-nth items 1)) and__13__auto)) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-ctor") ctx (jolt-invoke (var-deref "jolt.host" "form-sym-name") (jolt-nth items 1)) (jolt-drop 2 items) env) (if (jolt-truthy? (let* ((and__13__auto (jolt= hname "."))) (if (jolt-truthy? and__13__auto) (jolt-not shadowed) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-dot") ctx items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.analyzer" "field-head?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze-field") ctx hname items env) (if (jolt-truthy? (let* ((and__13__auto hname)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-special?") hname) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") (jolt-invoke (var-deref "clojure.core" "str") "special form " hname)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.host" "form-sym?") head))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-not shadowed))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.host" "form-macro?") ctx head) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx (jolt-invoke (var-deref "jolt.host" "form-expand-1") ctx form) env) (if (jolt-truthy? (keyword #f "else")) (let* ((n (jolt-invoke (var-deref "jolt.ir" "invoke") (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx head env) (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__54_) (let fnrec1648 ((p__54_ p__54_)) (jolt-invoke (var-deref "jolt.analyzer" "analyze") ctx p__54_ env))) (jolt-rest items)))) (p (jolt-invoke (var-deref "jolt.host" "form-position") form))) (if (jolt-truthy? p) (jolt-assoc n (keyword #f "pos") p) n)) jolt-nil)))))))))))))))) analyze-list))) (guard (e (#t #f)) (def-var! "jolt.analyzer" "analyze" (letrec ((analyze (case-lambda ((ctx form) (let fnrec1649 ((ctx ctx) (form form)) (jolt-invoke analyze ctx form (jolt-invoke (var-deref "jolt.analyzer" "empty-env") )))) ((ctx form env) (let fnrec1650 ((ctx ctx) (form form) (env env)) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-literal?") form)) (jolt-invoke (var-deref "jolt.ir" "const") form) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-sym?") form)) (jolt-invoke (var-deref "jolt.analyzer" "analyze-symbol") ctx form env) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-vec?") form)) (jolt-invoke (var-deref "jolt.ir" "vector-node") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__55_) (let fnrec1667 ((p__55_ p__55_)) (jolt-invoke analyze ctx p__55_ env))) (jolt-invoke (var-deref "jolt.host" "form-vec-items") form))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-map?") form)) (jolt-invoke (var-deref "jolt.ir" "map-node") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p) (let fnrec1664 ((p p)) (let* ((_o$1665 (jolt-invoke analyze ctx (jolt-first p) env)) (_o$1666 (jolt-invoke analyze ctx (jolt-invoke (var-deref "clojure.core" "second") p) env))) (jolt-vector _o$1665 _o$1666)))) (jolt-invoke (var-deref "jolt.host" "form-map-pairs") form))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-set?") form)) (jolt-invoke (var-deref "jolt.ir" "set-node") (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (p__56_) (let fnrec1663 ((p__56_ p__56_)) (jolt-invoke analyze ctx p__56_ env))) (jolt-invoke (var-deref "jolt.host" "form-set-items") form))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-list?") form)) (jolt-invoke (var-deref "jolt.analyzer" "analyze-list") ctx form env) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-regex?") form)) (let* ((_o$1659 (keyword #f "op")) (_o$1660 (keyword #f "regex")) (_o$1661 (keyword #f "source")) (_o$1662 (jolt-invoke (var-deref "jolt.host" "form-regex-source") form))) (jolt-hash-map _o$1659 _o$1660 _o$1661 _o$1662)) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-inst?") form)) (let* ((_o$1655 (keyword #f "op")) (_o$1656 (keyword #f "inst")) (_o$1657 (keyword #f "source")) (_o$1658 (jolt-invoke (var-deref "jolt.host" "form-inst-source") form))) (jolt-hash-map _o$1655 _o$1656 _o$1657 _o$1658)) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-uuid?") form)) (let* ((_o$1651 (keyword #f "op")) (_o$1652 (keyword #f "uuid")) (_o$1653 (keyword #f "source")) (_o$1654 (jolt-invoke (var-deref "jolt.host" "form-uuid-source") form))) (jolt-hash-map _o$1651 _o$1652 _o$1653 _o$1654)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "jolt.analyzer" "uncompilable") "unsupported form") jolt-nil))))))))))))))) analyze))) (guard (e (#t #f)) @@ -107,7 +107,7 @@ (guard (e (#t #f)) (def-var-with-meta! "jolt.backend-scheme" "core-value-procs" (jolt-invoke (var-deref "clojure.core" "merge") (var-deref "jolt.backend-scheme" "native-ops") (let* ((_o$1160 "+") (_o$1161 "jolt-add") (_o$1162 "-") (_o$1163 "jolt-sub") (_o$1164 "*") (_o$1165 "jolt-mul") (_o$1166 "/") (_o$1167 "jolt-div")) (jolt-hash-map _o$1160 _o$1161 _o$1162 _o$1163 _o$1164 _o$1165 _o$1166 _o$1167))) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var-with-meta! "jolt.backend-scheme" "op-arity" (let* ((_o$1209 "inc") (_o$1210 (lambda (p__4_) (let fnrec1168 ((p__4_ p__4_)) (jolt= p__4_ 1.0)))) (_o$1211 "dec") (_o$1212 (lambda (p__5_) (let fnrec1169 ((p__5_ p__5_)) (jolt= p__5_ 1.0)))) (_o$1213 "not") (_o$1214 (lambda (p__6_) (let fnrec1170 ((p__6_ p__6_)) (jolt= p__6_ 1.0)))) (_o$1215 "count") (_o$1216 (lambda (p__7_) (let fnrec1171 ((p__7_ p__7_)) (jolt= p__7_ 1.0)))) (_o$1217 "empty?") (_o$1218 (lambda (p__8_) (let fnrec1172 ((p__8_ p__8_)) (jolt= p__8_ 1.0)))) (_o$1219 "peek") (_o$1220 (lambda (p__9_) (let fnrec1173 ((p__9_ p__9_)) (jolt= p__9_ 1.0)))) (_o$1221 "pop") (_o$1222 (lambda (p__10_) (let fnrec1174 ((p__10_ p__10_)) (jolt= p__10_ 1.0)))) (_o$1223 "mod") (_o$1224 (lambda (p__11_) (let fnrec1175 ((p__11_ p__11_)) (jolt= p__11_ 2.0)))) (_o$1225 "rem") (_o$1226 (lambda (p__12_) (let fnrec1176 ((p__12_ p__12_)) (jolt= p__12_ 2.0)))) (_o$1227 "quot") (_o$1228 (lambda (p__13_) (let fnrec1177 ((p__13_ p__13_)) (jolt= p__13_ 2.0)))) (_o$1229 "contains?") (_o$1230 (lambda (p__14_) (let fnrec1178 ((p__14_ p__14_)) (jolt= p__14_ 2.0)))) (_o$1231 "get") (_o$1232 (lambda (p__15_) (let fnrec1179 ((p__15_ p__15_)) (let* ((or__14__auto (jolt= p__15_ 2.0))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__15_ 3.0)))))) (_o$1233 "nth") (_o$1234 (lambda (p__16_) (let fnrec1180 ((p__16_ p__16_)) (let* ((or__14__auto (jolt= p__16_ 2.0))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__16_ 3.0)))))) (_o$1235 "assoc") (_o$1236 (lambda (p__17_) (let fnrec1181 ((p__17_ p__17_)) (let* ((and__13__auto (>= p__17_ 3.0))) (if (jolt-truthy? and__13__auto) (jolt-odd? p__17_) and__13__auto))))) (_o$1237 "dissoc") (_o$1238 (lambda (p__18_) (let fnrec1182 ((p__18_ p__18_)) (>= p__18_ 1.0)))) (_o$1239 "conj") (_o$1240 (lambda (p__19_) (let fnrec1183 ((p__19_ p__19_)) (>= p__19_ 1.0)))) (_o$1241 "first") (_o$1242 (lambda (p__20_) (let fnrec1184 ((p__20_ p__20_)) (jolt= p__20_ 1.0)))) (_o$1243 "rest") (_o$1244 (lambda (p__21_) (let fnrec1185 ((p__21_ p__21_)) (jolt= p__21_ 1.0)))) (_o$1245 "next") (_o$1246 (lambda (p__22_) (let fnrec1186 ((p__22_ p__22_)) (jolt= p__22_ 1.0)))) (_o$1247 "seq") (_o$1248 (lambda (p__23_) (let fnrec1187 ((p__23_ p__23_)) (jolt= p__23_ 1.0)))) (_o$1249 "reverse") (_o$1250 (lambda (p__24_) (let fnrec1188 ((p__24_ p__24_)) (jolt= p__24_ 1.0)))) (_o$1251 "last") (_o$1252 (lambda (p__25_) (let fnrec1189 ((p__25_ p__25_)) (jolt= p__25_ 1.0)))) (_o$1253 "keys") (_o$1254 (lambda (p__26_) (let fnrec1190 ((p__26_ p__26_)) (jolt= p__26_ 1.0)))) (_o$1255 "vals") (_o$1256 (lambda (p__27_) (let fnrec1191 ((p__27_ p__27_)) (jolt= p__27_ 1.0)))) (_o$1257 "even?") (_o$1258 (lambda (p__28_) (let fnrec1192 ((p__28_ p__28_)) (jolt= p__28_ 1.0)))) (_o$1259 "odd?") (_o$1260 (lambda (p__29_) (let fnrec1193 ((p__29_ p__29_)) (jolt= p__29_ 1.0)))) (_o$1261 "pos?") (_o$1262 (lambda (p__30_) (let fnrec1194 ((p__30_ p__30_)) (jolt= p__30_ 1.0)))) (_o$1263 "neg?") (_o$1264 (lambda (p__31_) (let fnrec1195 ((p__31_ p__31_)) (jolt= p__31_ 1.0)))) (_o$1265 "zero?") (_o$1266 (lambda (p__32_) (let fnrec1196 ((p__32_ p__32_)) (jolt= p__32_ 1.0)))) (_o$1267 "identity") (_o$1268 (lambda (p__33_) (let fnrec1197 ((p__33_ p__33_)) (jolt= p__33_ 1.0)))) (_o$1269 "cons") (_o$1270 (lambda (p__34_) (let fnrec1198 ((p__34_ p__34_)) (jolt= p__34_ 2.0)))) (_o$1271 "filter") (_o$1272 (lambda (p__35_) (let fnrec1199 ((p__35_ p__35_)) (jolt= p__35_ 2.0)))) (_o$1273 "remove") (_o$1274 (lambda (p__36_) (let fnrec1200 ((p__36_ p__36_)) (jolt= p__36_ 2.0)))) (_o$1275 "into") (_o$1276 (lambda (p__37_) (let fnrec1201 ((p__37_ p__37_)) (jolt= p__37_ 2.0)))) (_o$1277 "take") (_o$1278 (lambda (p__38_) (let fnrec1202 ((p__38_ p__38_)) (jolt= p__38_ 2.0)))) (_o$1279 "drop") (_o$1280 (lambda (p__39_) (let fnrec1203 ((p__39_ p__39_)) (jolt= p__39_ 2.0)))) (_o$1281 "map") (_o$1282 (lambda (p__40_) (let fnrec1204 ((p__40_ p__40_)) (>= p__40_ 2.0)))) (_o$1283 "apply") (_o$1284 (lambda (p__41_) (let fnrec1205 ((p__41_ p__41_)) (>= p__41_ 2.0)))) (_o$1285 "reduce") (_o$1286 (lambda (p__42_) (let fnrec1206 ((p__42_ p__42_)) (let* ((or__14__auto (jolt= p__42_ 2.0))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__42_ 3.0)))))) (_o$1287 "range") (_o$1288 (lambda (p__43_) (let fnrec1207 ((p__43_ p__43_)) (let* ((and__13__auto (>= p__43_ 0.0))) (if (jolt-truthy? and__13__auto) (<= p__43_ 3.0) and__13__auto))))) (_o$1289 "ex-info") (_o$1290 (lambda (p__44_) (let fnrec1208 ((p__44_ p__44_)) (let* ((or__14__auto (jolt= p__44_ 2.0))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__44_ 3.0))))))) (jolt-hash-map _o$1209 _o$1210 _o$1211 _o$1212 _o$1213 _o$1214 _o$1215 _o$1216 _o$1217 _o$1218 _o$1219 _o$1220 _o$1221 _o$1222 _o$1223 _o$1224 _o$1225 _o$1226 _o$1227 _o$1228 _o$1229 _o$1230 _o$1231 _o$1232 _o$1233 _o$1234 _o$1235 _o$1236 _o$1237 _o$1238 _o$1239 _o$1240 _o$1241 _o$1242 _o$1243 _o$1244 _o$1245 _o$1246 _o$1247 _o$1248 _o$1249 _o$1250 _o$1251 _o$1252 _o$1253 _o$1254 _o$1255 _o$1256 _o$1257 _o$1258 _o$1259 _o$1260 _o$1261 _o$1262 _o$1263 _o$1264 _o$1265 _o$1266 _o$1267 _o$1268 _o$1269 _o$1270 _o$1271 _o$1272 _o$1273 _o$1274 _o$1275 _o$1276 _o$1277 _o$1278 _o$1279 _o$1280 _o$1281 _o$1282 _o$1283 _o$1284 _o$1285 _o$1286 _o$1287 _o$1288 _o$1289 _o$1290)) (jolt-hash-map (keyword #f "private") #t))) + (def-var-with-meta! "jolt.backend-scheme" "op-arity" (let* ((_o$1209 "inc") (_o$1210 (lambda (p__4_) (let fnrec1168 ((p__4_ p__4_)) (jolt= p__4_ 1)))) (_o$1211 "dec") (_o$1212 (lambda (p__5_) (let fnrec1169 ((p__5_ p__5_)) (jolt= p__5_ 1)))) (_o$1213 "not") (_o$1214 (lambda (p__6_) (let fnrec1170 ((p__6_ p__6_)) (jolt= p__6_ 1)))) (_o$1215 "count") (_o$1216 (lambda (p__7_) (let fnrec1171 ((p__7_ p__7_)) (jolt= p__7_ 1)))) (_o$1217 "empty?") (_o$1218 (lambda (p__8_) (let fnrec1172 ((p__8_ p__8_)) (jolt= p__8_ 1)))) (_o$1219 "peek") (_o$1220 (lambda (p__9_) (let fnrec1173 ((p__9_ p__9_)) (jolt= p__9_ 1)))) (_o$1221 "pop") (_o$1222 (lambda (p__10_) (let fnrec1174 ((p__10_ p__10_)) (jolt= p__10_ 1)))) (_o$1223 "mod") (_o$1224 (lambda (p__11_) (let fnrec1175 ((p__11_ p__11_)) (jolt= p__11_ 2)))) (_o$1225 "rem") (_o$1226 (lambda (p__12_) (let fnrec1176 ((p__12_ p__12_)) (jolt= p__12_ 2)))) (_o$1227 "quot") (_o$1228 (lambda (p__13_) (let fnrec1177 ((p__13_ p__13_)) (jolt= p__13_ 2)))) (_o$1229 "contains?") (_o$1230 (lambda (p__14_) (let fnrec1178 ((p__14_ p__14_)) (jolt= p__14_ 2)))) (_o$1231 "get") (_o$1232 (lambda (p__15_) (let fnrec1179 ((p__15_ p__15_)) (let* ((or__14__auto (jolt= p__15_ 2))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__15_ 3)))))) (_o$1233 "nth") (_o$1234 (lambda (p__16_) (let fnrec1180 ((p__16_ p__16_)) (let* ((or__14__auto (jolt= p__16_ 2))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__16_ 3)))))) (_o$1235 "assoc") (_o$1236 (lambda (p__17_) (let fnrec1181 ((p__17_ p__17_)) (let* ((and__13__auto (>= p__17_ 3))) (if (jolt-truthy? and__13__auto) (jolt-odd? p__17_) and__13__auto))))) (_o$1237 "dissoc") (_o$1238 (lambda (p__18_) (let fnrec1182 ((p__18_ p__18_)) (>= p__18_ 1)))) (_o$1239 "conj") (_o$1240 (lambda (p__19_) (let fnrec1183 ((p__19_ p__19_)) (>= p__19_ 1)))) (_o$1241 "first") (_o$1242 (lambda (p__20_) (let fnrec1184 ((p__20_ p__20_)) (jolt= p__20_ 1)))) (_o$1243 "rest") (_o$1244 (lambda (p__21_) (let fnrec1185 ((p__21_ p__21_)) (jolt= p__21_ 1)))) (_o$1245 "next") (_o$1246 (lambda (p__22_) (let fnrec1186 ((p__22_ p__22_)) (jolt= p__22_ 1)))) (_o$1247 "seq") (_o$1248 (lambda (p__23_) (let fnrec1187 ((p__23_ p__23_)) (jolt= p__23_ 1)))) (_o$1249 "reverse") (_o$1250 (lambda (p__24_) (let fnrec1188 ((p__24_ p__24_)) (jolt= p__24_ 1)))) (_o$1251 "last") (_o$1252 (lambda (p__25_) (let fnrec1189 ((p__25_ p__25_)) (jolt= p__25_ 1)))) (_o$1253 "keys") (_o$1254 (lambda (p__26_) (let fnrec1190 ((p__26_ p__26_)) (jolt= p__26_ 1)))) (_o$1255 "vals") (_o$1256 (lambda (p__27_) (let fnrec1191 ((p__27_ p__27_)) (jolt= p__27_ 1)))) (_o$1257 "even?") (_o$1258 (lambda (p__28_) (let fnrec1192 ((p__28_ p__28_)) (jolt= p__28_ 1)))) (_o$1259 "odd?") (_o$1260 (lambda (p__29_) (let fnrec1193 ((p__29_ p__29_)) (jolt= p__29_ 1)))) (_o$1261 "pos?") (_o$1262 (lambda (p__30_) (let fnrec1194 ((p__30_ p__30_)) (jolt= p__30_ 1)))) (_o$1263 "neg?") (_o$1264 (lambda (p__31_) (let fnrec1195 ((p__31_ p__31_)) (jolt= p__31_ 1)))) (_o$1265 "zero?") (_o$1266 (lambda (p__32_) (let fnrec1196 ((p__32_ p__32_)) (jolt= p__32_ 1)))) (_o$1267 "identity") (_o$1268 (lambda (p__33_) (let fnrec1197 ((p__33_ p__33_)) (jolt= p__33_ 1)))) (_o$1269 "cons") (_o$1270 (lambda (p__34_) (let fnrec1198 ((p__34_ p__34_)) (jolt= p__34_ 2)))) (_o$1271 "filter") (_o$1272 (lambda (p__35_) (let fnrec1199 ((p__35_ p__35_)) (jolt= p__35_ 2)))) (_o$1273 "remove") (_o$1274 (lambda (p__36_) (let fnrec1200 ((p__36_ p__36_)) (jolt= p__36_ 2)))) (_o$1275 "into") (_o$1276 (lambda (p__37_) (let fnrec1201 ((p__37_ p__37_)) (jolt= p__37_ 2)))) (_o$1277 "take") (_o$1278 (lambda (p__38_) (let fnrec1202 ((p__38_ p__38_)) (jolt= p__38_ 2)))) (_o$1279 "drop") (_o$1280 (lambda (p__39_) (let fnrec1203 ((p__39_ p__39_)) (jolt= p__39_ 2)))) (_o$1281 "map") (_o$1282 (lambda (p__40_) (let fnrec1204 ((p__40_ p__40_)) (>= p__40_ 2)))) (_o$1283 "apply") (_o$1284 (lambda (p__41_) (let fnrec1205 ((p__41_ p__41_)) (>= p__41_ 2)))) (_o$1285 "reduce") (_o$1286 (lambda (p__42_) (let fnrec1206 ((p__42_ p__42_)) (let* ((or__14__auto (jolt= p__42_ 2))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__42_ 3)))))) (_o$1287 "range") (_o$1288 (lambda (p__43_) (let fnrec1207 ((p__43_ p__43_)) (let* ((and__13__auto (>= p__43_ 0))) (if (jolt-truthy? and__13__auto) (<= p__43_ 3) and__13__auto))))) (_o$1289 "ex-info") (_o$1290 (lambda (p__44_) (let fnrec1208 ((p__44_ p__44_)) (let* ((or__14__auto (jolt= p__44_ 2))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= p__44_ 3))))))) (jolt-hash-map _o$1209 _o$1210 _o$1211 _o$1212 _o$1213 _o$1214 _o$1215 _o$1216 _o$1217 _o$1218 _o$1219 _o$1220 _o$1221 _o$1222 _o$1223 _o$1224 _o$1225 _o$1226 _o$1227 _o$1228 _o$1229 _o$1230 _o$1231 _o$1232 _o$1233 _o$1234 _o$1235 _o$1236 _o$1237 _o$1238 _o$1239 _o$1240 _o$1241 _o$1242 _o$1243 _o$1244 _o$1245 _o$1246 _o$1247 _o$1248 _o$1249 _o$1250 _o$1251 _o$1252 _o$1253 _o$1254 _o$1255 _o$1256 _o$1257 _o$1258 _o$1259 _o$1260 _o$1261 _o$1262 _o$1263 _o$1264 _o$1265 _o$1266 _o$1267 _o$1268 _o$1269 _o$1270 _o$1271 _o$1272 _o$1273 _o$1274 _o$1275 _o$1276 _o$1277 _o$1278 _o$1279 _o$1280 _o$1281 _o$1282 _o$1283 _o$1284 _o$1285 _o$1286 _o$1287 _o$1288 _o$1289 _o$1290)) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) (def-var-with-meta! "jolt.backend-scheme" "cmp1-ops" (let* ((_o$1291 "<") (_o$1292 ">") (_o$1293 "<=") (_o$1294 ">=")) (jolt-hash-set _o$1291 _o$1292 _o$1293 _o$1294)) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) @@ -123,7 +123,7 @@ (guard (e (#t #f)) (def-var-with-meta! "jolt.backend-scheme" "*known-procs*" (jolt-hash-set) (jolt-hash-map (keyword #f "dynamic") #t))) (guard (e (#t #f)) - (def-var-with-meta! "jolt.backend-scheme" "gensym-counter" (jolt-invoke (var-deref "clojure.core" "atom") 0.0) (jolt-hash-map (keyword #f "private") #t))) + (def-var-with-meta! "jolt.backend-scheme" "gensym-counter" (jolt-invoke (var-deref "clojure.core" "atom") 0) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "fresh-label" (letrec ((fresh-label (lambda (prefix) (let fnrec1311 ((prefix prefix)) (jolt-invoke (var-deref "clojure.core" "str") prefix (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "jolt.backend-scheme" "gensym-counter") jolt-inc)))))) fresh-label))) (guard (e (#t #f)) @@ -131,17 +131,17 @@ (guard (e (#t #f)) (declare-var! "jolt.backend-scheme" "emit")) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "char-escape" (letrec ((char-escape (lambda (cp) (let fnrec1313 ((cp cp)) (if (jolt= cp 34.0) "\\\"" (if (jolt= cp 92.0) "\\\\" (if (jolt= cp 10.0) "\\n" (if (jolt= cp 9.0) "\\t" (if (jolt= cp 13.0) "\\r" (if (jolt-truthy? (let* ((and__13__auto (>= cp 32.0))) (if (jolt-truthy? and__13__auto) (< cp 127.0) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "char") cp)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "\\x" (jolt-invoke (var-deref "clojure.core" "format") "%x" cp) ";") jolt-nil))))))))))) char-escape))) + (def-var! "jolt.backend-scheme" "char-escape" (letrec ((char-escape (lambda (cp) (let fnrec1313 ((cp cp)) (if (jolt= cp 34) "\\\"" (if (jolt= cp 92) "\\\\" (if (jolt= cp 10) "\\n" (if (jolt= cp 9) "\\t" (if (jolt= cp 13) "\\r" (if (jolt-truthy? (let* ((and__13__auto (>= cp 32))) (if (jolt-truthy? and__13__auto) (< cp 127) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "char") cp)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "\\x" (jolt-invoke (var-deref "clojure.core" "format") "%x" cp) ";") jolt-nil))))))))))) char-escape))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "chez-str-lit" (letrec ((chez-str-lit (lambda (s) (let fnrec1314 ((s s)) (jolt-invoke (var-deref "clojure.core" "str") "\"" (jolt-apply (var-deref "clojure.core" "str") (jolt-map (lambda (c) (let fnrec1315 ((c c)) (jolt-invoke (var-deref "jolt.backend-scheme" "char-escape") (jolt-invoke (var-deref "clojure.core" "int") c)))) s)) "\""))))) chez-str-lit))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-const" (letrec ((emit-const (lambda (v) (let fnrec1316 ((v v)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") v)) "jolt-nil" (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "boolean?") v)) (if (jolt-truthy? v) "#t" "#f") (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") v)) (if (jolt= v +inf.0) "+inf.0" (if (jolt= v -inf.0) "-inf.0" (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not=") v v)) "+nan.0" (if (jolt-truthy? (keyword #f "else")) (let* ((s (jolt-invoke (var-deref "clojure.core" "str") v))) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.string" "includes?") s "."))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.string" "includes?") s "e")))) s (jolt-invoke (var-deref "clojure.core" "str") s ".0"))) jolt-nil)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") v)) (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") v) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") v)) (let* ((temp__4__auto (jolt-invoke (var-deref "clojure.core" "namespace") v))) (if (jolt-truthy? temp__4__auto) (let* ((kns temp__4__auto)) (jolt-invoke (var-deref "clojure.core" "str") "(keyword " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") kns) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-invoke (var-deref "clojure.core" "name") v)) ")")) (jolt-invoke (var-deref "clojure.core" "str") "(keyword #f " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-invoke (var-deref "clojure.core" "name") v)) ")"))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-char?") v)) (jolt-invoke (var-deref "clojure.core" "str") "(integer->char " (jolt-invoke (var-deref "jolt.host" "form-char-code") v) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit-const: unsupported literal " (jolt-invoke (var-deref "clojure.core" "pr-str") v)) (jolt-hash-map))) jolt-nil))))))))))) emit-const))) + (def-var! "jolt.backend-scheme" "emit-const" (letrec ((emit-const (lambda (v) (let fnrec1316 ((v v)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") v)) "jolt-nil" (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "boolean?") v)) (if (jolt-truthy? v) "#t" "#f") (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") v)) (if (jolt= v +inf.0) "+inf.0" (if (jolt= v -inf.0) "-inf.0" (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not=") v v)) "+nan.0" (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "float?") v)) (let* ((s (jolt-invoke (var-deref "clojure.core" "str") v))) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.string" "includes?") s "."))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.string" "includes?") s "e")))) s (jolt-invoke (var-deref "clojure.core" "str") s ".0"))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") v) jolt-nil))))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") v)) (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") v) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") v)) (let* ((temp__4__auto (jolt-invoke (var-deref "clojure.core" "namespace") v))) (if (jolt-truthy? temp__4__auto) (let* ((kns temp__4__auto)) (jolt-invoke (var-deref "clojure.core" "str") "(keyword " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") kns) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-invoke (var-deref "clojure.core" "name") v)) ")")) (jolt-invoke (var-deref "clojure.core" "str") "(keyword #f " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-invoke (var-deref "clojure.core" "name") v)) ")"))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.host" "form-char?") v)) (jolt-invoke (var-deref "clojure.core" "str") "(integer->char " (jolt-invoke (var-deref "jolt.host" "form-char-code") v) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit-const: unsupported literal " (jolt-invoke (var-deref "clojure.core" "pr-str") v)) (jolt-hash-map))) jolt-nil))))))))))) emit-const))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-ordered" (letrec ((emit-ordered (lambda (ctor arg-strs) (let fnrec1317 ((ctor ctor) (arg-strs arg-strs)) (if (< (jolt-count arg-strs) 2.0) (jolt-invoke (var-deref "clojure.core" "str") "(" ctor (if (jolt-empty? arg-strs) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " arg-strs))) ")") (let* ((tmps (jolt-map (lambda (_) (let fnrec1318 ((_ _)) (jolt-invoke (var-deref "jolt.backend-scheme" "fresh-label") "_o$"))) arg-strs)) (binds (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (t a) (let fnrec1319 ((t t) (a a)) (jolt-invoke (var-deref "clojure.core" "str") "(" t " " a ")"))) tmps arg-strs)))) (jolt-invoke (var-deref "clojure.core" "str") "(let* (" binds ") (" ctor " " (jolt-invoke (var-deref "clojure.string" "join") " " tmps) "))"))))))) emit-ordered))) + (def-var! "jolt.backend-scheme" "emit-ordered" (letrec ((emit-ordered (lambda (ctor arg-strs) (let fnrec1317 ((ctor ctor) (arg-strs arg-strs)) (if (< (jolt-count arg-strs) 2) (jolt-invoke (var-deref "clojure.core" "str") "(" ctor (if (jolt-empty? arg-strs) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " arg-strs))) ")") (let* ((tmps (jolt-map (lambda (_) (let fnrec1318 ((_ _)) (jolt-invoke (var-deref "jolt.backend-scheme" "fresh-label") "_o$"))) arg-strs)) (binds (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (t a) (let fnrec1319 ((t t) (a a)) (jolt-invoke (var-deref "clojure.core" "str") "(" t " " a ")"))) tmps arg-strs)))) (jolt-invoke (var-deref "clojure.core" "str") "(let* (" binds ") (" ctor " " (jolt-invoke (var-deref "clojure.string" "join") " " tmps) "))"))))))) emit-ordered))) (guard (e (#t #f)) (declare-var! "jolt.backend-scheme" "emit-quoted")) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-quoted-map" (letrec ((emit-quoted-map (lambda (pairs) (let fnrec1320 ((pairs pairs)) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-hash-map " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (p) (let fnrec1321 ((p p)) (let* ((_o$1322 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-nth p 0.0))) (_o$1323 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-nth p 1.0)))) (jolt-vector _o$1322 _o$1323)))) pairs)) ")"))))) emit-quoted-map))) + (def-var! "jolt.backend-scheme" "emit-quoted-map" (letrec ((emit-quoted-map (lambda (pairs) (let fnrec1320 ((pairs pairs)) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-hash-map " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (p) (let fnrec1321 ((p p)) (let* ((_o$1322 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-nth p 0))) (_o$1323 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-nth p 1)))) (jolt-vector _o$1322 _o$1323)))) pairs)) ")"))))) emit-quoted-map))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "emit-quoted-map-value" (letrec ((emit-quoted-map-value (lambda (m) (let fnrec1324 ((m m)) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-hash-map " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (k) (let fnrec1325 ((k k)) (let* ((_o$1326 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") k)) (_o$1327 (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-get m k)))) (jolt-vector _o$1326 _o$1327)))) (jolt-keys m))) ")"))))) emit-quoted-map-value))) (guard (e (#t #f)) @@ -149,17 +149,17 @@ (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "jmeta-nonempty?" (letrec ((jmeta-nonempty? (lambda (m) (let fnrec1329 ((m m)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "map?") m))) (if (jolt-truthy? and__13__auto) (jolt-pos? (jolt-count m)) and__13__auto)))))) jmeta-nonempty?))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-binding" (letrec ((emit-binding (lambda (b) (let fnrec1330 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-nth b 0.0)) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-nth b 1.0)) ")"))))) emit-binding))) + (def-var! "jolt.backend-scheme" "emit-binding" (letrec ((emit-binding (lambda (b) (let fnrec1330 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-nth b 0)) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-nth b 1)) ")"))))) emit-binding))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "emit-let" (letrec ((emit-let (lambda (node) (let fnrec1331 ((node node)) (let* ((kw (if (jolt-truthy? (jolt-get node (keyword #f "letrec"))) "letrec*" "let*"))) (jolt-invoke (var-deref "clojure.core" "str") "(" kw " (" (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (var-deref "jolt.backend-scheme" "emit-binding") (jolt-get node (keyword #f "bindings")))) ") " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "body"))) ")")))))) emit-let))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-loop" (letrec ((emit-loop (lambda (node) (let fnrec1332 ((node node)) (let* ((label (jolt-invoke (var-deref "jolt.backend-scheme" "fresh-label") "loop")) (pairs (jolt-get node (keyword #f "bindings"))) (names (jolt-map (lambda (p__45_) (let fnrec1333 ((p__45_ p__45_)) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-nth p__45_ 0.0)))) pairs)) (inits (jolt-map (lambda (p__46_) (let fnrec1334 ((p__46_ p__46_)) (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-nth p__46_ 1.0)))) pairs)) (seq-bs (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (n i) (let fnrec1335 ((n n) (i i)) (jolt-invoke (var-deref "clojure.core" "str") "(" n " " i ")"))) names inits))) (rebinds (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (n) (let fnrec1336 ((n n)) (jolt-invoke (var-deref "clojure.core" "str") "(" n " " n ")"))) names))) (body (let* ((frame__8__auto (jolt-invoke (var-deref "clojure.core" "array-map") (jolt-var "jolt.backend-scheme" "*recur-target*") label))) (begin (jolt-invoke (var-deref "clojure.core" "push-thread-bindings") frame__8__auto) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "body")))) (lambda () (jolt-invoke (var-deref "clojure.core" "pop-thread-bindings") ))))))) (jolt-invoke (var-deref "clojure.core" "str") "(let* (" seq-bs ") (let " label " (" rebinds ") " body "))")))))) emit-loop))) + (def-var! "jolt.backend-scheme" "emit-loop" (letrec ((emit-loop (lambda (node) (let fnrec1332 ((node node)) (let* ((label (jolt-invoke (var-deref "jolt.backend-scheme" "fresh-label") "loop")) (pairs (jolt-get node (keyword #f "bindings"))) (names (jolt-map (lambda (p__45_) (let fnrec1333 ((p__45_ p__45_)) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-nth p__45_ 0)))) pairs)) (inits (jolt-map (lambda (p__46_) (let fnrec1334 ((p__46_ p__46_)) (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-nth p__46_ 1)))) pairs)) (seq-bs (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (n i) (let fnrec1335 ((n n) (i i)) (jolt-invoke (var-deref "clojure.core" "str") "(" n " " i ")"))) names inits))) (rebinds (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (n) (let fnrec1336 ((n n)) (jolt-invoke (var-deref "clojure.core" "str") "(" n " " n ")"))) names))) (body (let* ((frame__8__auto (jolt-invoke (var-deref "clojure.core" "array-map") (jolt-var "jolt.backend-scheme" "*recur-target*") label))) (begin (jolt-invoke (var-deref "clojure.core" "push-thread-bindings") frame__8__auto) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "body")))) (lambda () (jolt-invoke (var-deref "clojure.core" "pop-thread-bindings") ))))))) (jolt-invoke (var-deref "clojure.core" "str") "(let* (" seq-bs ") (let " label " (" rebinds ") " body "))")))))) emit-loop))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "emit-recur" (letrec ((emit-recur (lambda (node) (let fnrec1337 ((node node)) (begin (if (jolt-not (var-deref "jolt.backend-scheme" "*recur-target*")) (jolt-throw (jolt-ex-info "emit: recur outside a loop/fn target" (jolt-hash-map))) jolt-nil) (jolt-invoke (var-deref "clojure.core" "str") "(" (var-deref "jolt.backend-scheme" "*recur-target*") " " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "args")))) ")")))))) emit-recur))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "emit-arity-clause" (letrec ((emit-arity-clause (lambda (a) (let fnrec1338 ((a a)) (let* ((params (jolt-map (var-deref "jolt.backend-scheme" "munge-name") (jolt-get a (keyword #f "params")))) (restp (let* ((temp__15__auto (jolt-get a (keyword #f "rest")))) (if (jolt-truthy? temp__15__auto) (let* ((r temp__15__auto)) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") r)) jolt-nil))) (label (jolt-invoke (var-deref "jolt.backend-scheme" "fresh-label") "fnrec")) (body (let* ((frame__8__auto (jolt-invoke (var-deref "clojure.core" "array-map") (jolt-var "jolt.backend-scheme" "*recur-target*") label))) (begin (jolt-invoke (var-deref "clojure.core" "push-thread-bindings") frame__8__auto) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get a (keyword #f "body")))) (lambda () (jolt-invoke (var-deref "clojure.core" "pop-thread-bindings") )))))) (paramlist (if (jolt-truthy? (let* ((and__13__auto restp)) (if (jolt-truthy? and__13__auto) (jolt-empty? params) and__13__auto))) restp (if (jolt-truthy? restp) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-invoke (var-deref "clojure.string" "join") " " params) " . " restp ")") (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-invoke (var-deref "clojure.string" "join") " " params) ")") jolt-nil)))) (binds (if (jolt-truthy? restp) (jolt-concat (jolt-map (lambda (p) (let fnrec1342 ((p p)) (jolt-invoke (var-deref "clojure.core" "str") "(" p " " p ")"))) params) (jolt-vector (jolt-invoke (var-deref "clojure.core" "str") "(" restp " (list->cseq " restp "))"))) (jolt-map (lambda (p) (let fnrec1341 ((p p)) (jolt-invoke (var-deref "clojure.core" "str") "(" p " " p ")"))) params)))) (let* ((_o$1339 paramlist) (_o$1340 (jolt-invoke (var-deref "clojure.core" "str") "(let " label " (" (jolt-invoke (var-deref "clojure.string" "join") " " binds) ") " body ")"))) (jolt-vector _o$1339 _o$1340))))))) emit-arity-clause))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-fn" (letrec ((emit-fn (lambda (node) (let fnrec1343 ((node node)) (let* ((arities (jolt-get node (keyword #f "arities"))) (self (let* ((temp__15__auto (jolt-get node (keyword #f "name")))) (if (jolt-truthy? temp__15__auto) (let* ((nm temp__15__auto)) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") nm)) jolt-nil))) (clauses (let* ((frame__8__auto (jolt-invoke (var-deref "clojure.core" "array-map") (jolt-var "jolt.backend-scheme" "*known-procs*") (if (jolt-truthy? self) (jolt-conj (var-deref "jolt.backend-scheme" "*known-procs*") self) (var-deref "jolt.backend-scheme" "*known-procs*"))))) (begin (jolt-invoke (var-deref "clojure.core" "push-thread-bindings") frame__8__auto) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "jolt.backend-scheme" "emit-arity-clause") arities)) (lambda () (jolt-invoke (var-deref "clojure.core" "pop-thread-bindings") )))))) (lambda (if (jolt= 1.0 (jolt-count clauses)) (let* ((c (jolt-first clauses))) (jolt-invoke (var-deref "clojure.core" "str") "(lambda " (jolt-nth c 0.0) " " (jolt-nth c 1.0) ")")) (jolt-invoke (var-deref "clojure.core" "str") "(case-lambda " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (c) (let fnrec1344 ((c c)) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-nth c 0.0) " " (jolt-nth c 1.0) ")"))) clauses)) ")")))) (let* ((temp__4__auto (jolt-get node (keyword #f "name")))) (if (jolt-truthy? temp__4__auto) (let* ((nm temp__4__auto)) (let* ((m (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") nm))) (jolt-invoke (var-deref "clojure.core" "str") "(letrec ((" m " " lambda ")) " m ")"))) lambda))))))) emit-fn))) + (def-var! "jolt.backend-scheme" "emit-fn" (letrec ((emit-fn (lambda (node) (let fnrec1343 ((node node)) (let* ((arities (jolt-get node (keyword #f "arities"))) (self (let* ((temp__15__auto (jolt-get node (keyword #f "name")))) (if (jolt-truthy? temp__15__auto) (let* ((nm temp__15__auto)) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") nm)) jolt-nil))) (clauses (let* ((frame__8__auto (jolt-invoke (var-deref "clojure.core" "array-map") (jolt-var "jolt.backend-scheme" "*known-procs*") (if (jolt-truthy? self) (jolt-conj (var-deref "jolt.backend-scheme" "*known-procs*") self) (var-deref "jolt.backend-scheme" "*known-procs*"))))) (begin (jolt-invoke (var-deref "clojure.core" "push-thread-bindings") frame__8__auto) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "jolt.backend-scheme" "emit-arity-clause") arities)) (lambda () (jolt-invoke (var-deref "clojure.core" "pop-thread-bindings") )))))) (lambda (if (jolt= 1 (jolt-count clauses)) (let* ((c (jolt-first clauses))) (jolt-invoke (var-deref "clojure.core" "str") "(lambda " (jolt-nth c 0) " " (jolt-nth c 1) ")")) (jolt-invoke (var-deref "clojure.core" "str") "(case-lambda " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map (lambda (c) (let fnrec1344 ((c c)) (jolt-invoke (var-deref "clojure.core" "str") "(" (jolt-nth c 0) " " (jolt-nth c 1) ")"))) clauses)) ")")))) (let* ((temp__4__auto (jolt-get node (keyword #f "name")))) (if (jolt-truthy? temp__4__auto) (let* ((nm temp__4__auto)) (let* ((m (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") nm))) (jolt-invoke (var-deref "clojure.core" "str") "(letrec ((" m " " lambda ")) " m ")"))) lambda))))))) emit-fn))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "native-op" (letrec ((native-op (lambda (fnode nargs) (let fnrec1345 ((fnode fnode) (nargs nargs)) (let* ((nm (let* ((G__32 (jolt-get fnode (keyword #f "op")))) (if (jolt= G__32 (keyword #f "var")) (if (jolt= "clojure.core" (jolt-get fnode (keyword #f "ns"))) (jolt-get fnode (keyword #f "name")) jolt-nil) (if (jolt= G__32 (keyword #f "host")) (jolt-get fnode (keyword #f "name")) jolt-nil)))) (op (if (jolt-truthy? nm) (jolt-invoke (var-deref "jolt.backend-scheme" "native-ops") nm) jolt-nil)) (arity-ok (if (jolt-truthy? nm) (jolt-invoke (var-deref "jolt.backend-scheme" "op-arity") nm) jolt-nil))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") op)) jolt-nil (if (jolt-truthy? (let* ((and__13__auto arity-ok)) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke arity-ok nargs)) and__13__auto))) jolt-nil (if (jolt-truthy? (keyword #f "else")) op jolt-nil)))))))) native-op))) (guard (e (#t #f)) @@ -167,10 +167,10 @@ (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "stdlib-var?" (letrec ((stdlib-var? (lambda (n) (let fnrec1347 ((n n)) (let* ((and__13__auto (jolt= (keyword #f "var") (jolt-get n (keyword #f "op"))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.string" "starts-with?") (let* ((or__14__auto (jolt-get n (keyword #f "ns")))) (if (jolt-truthy? or__14__auto) or__14__auto "")) "clojure.") and__13__auto)))))) stdlib-var?))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit-invoke" (letrec ((emit-invoke (lambda (node) (let fnrec1348 ((node node)) (let* ((fnode (jolt-get node (keyword #f "fn"))) (args (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "args")))) (nop (jolt-invoke (var-deref "jolt.backend-scheme" "native-op") fnode (jolt-count args))) (kind (jolt-invoke (var-deref "jolt.backend-scheme" "ifn-kind") fnode)) (default (if (> (jolt-count args) 1.0) (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-nth args 1.0)) ""))) (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-empty? args))) (if (jolt-truthy? and__13__auto) (jolt= nop "+") and__13__auto)) and__13__auto))) "0.0" (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-empty? args))) (if (jolt-truthy? and__13__auto) (jolt= nop "*") and__13__auto)) and__13__auto))) "1.0" (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= 1.0 (jolt-count args)))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.backend-scheme" "cmp1-ops") nop) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") "(begin " (jolt-first args) " #t)") (if (jolt-truthy? nop) (jolt-invoke (var-deref "clojure.core" "str") "(" nop " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt= kind (keyword #f "keyword")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-get " (jolt-first args) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) default ")") (if (jolt= kind (keyword #f "coll")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-get " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-first args) default ")") (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.backend-scheme" "stdlib-var?") fnode))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "jolt.backend-scheme" "prelude-mode?"))) and__13__auto))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported stdlib fn `" (jolt-get fnode (keyword #f "ns")) "/" (jolt-get fnode (keyword #f "name")) "` (no core on Chez yet)") (jolt-hash-map))) (if (jolt= (keyword #f "host-static") (jolt-get fnode (keyword #f "op"))) (jolt-invoke (var-deref "clojure.core" "str") "(host-static-call " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get fnode (keyword #f "class"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get fnode (keyword #f "member"))) (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) ")") (if (jolt= (keyword #f "host") (jolt-get fnode (keyword #f "op"))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported host call `" (jolt-get fnode (keyword #f "name")) "`") (jolt-hash-map))) (if (jolt-truthy? (let* ((and__13__auto (jolt= (keyword #f "local") (jolt-get fnode (keyword #f "op"))))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "jolt.backend-scheme" "*known-procs*") (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-get fnode (keyword #f "name"))))) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt= (keyword #f "var") (jolt-get fnode (keyword #f "op"))) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") jolt-nil))))))))))))))))) emit-invoke))) + (def-var! "jolt.backend-scheme" "emit-invoke" (letrec ((emit-invoke (lambda (node) (let fnrec1348 ((node node)) (let* ((fnode (jolt-get node (keyword #f "fn"))) (args (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "args")))) (nop (jolt-invoke (var-deref "jolt.backend-scheme" "native-op") fnode (jolt-count args))) (kind (jolt-invoke (var-deref "jolt.backend-scheme" "ifn-kind") fnode)) (default (if (> (jolt-count args) 1) (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-nth args 1)) ""))) (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-empty? args))) (if (jolt-truthy? and__13__auto) (jolt= nop "+") and__13__auto)) and__13__auto))) "0" (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-empty? args))) (if (jolt-truthy? and__13__auto) (jolt= nop "*") and__13__auto)) and__13__auto))) "1" (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= 1 (jolt-count args)))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.backend-scheme" "cmp1-ops") nop) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") "(begin " (jolt-first args) " #t)") (if (jolt-truthy? nop) (jolt-invoke (var-deref "clojure.core" "str") "(" nop " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt= kind (keyword #f "keyword")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-get " (jolt-first args) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) default ")") (if (jolt= kind (keyword #f "coll")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-get " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-first args) default ")") (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.backend-scheme" "stdlib-var?") fnode))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "jolt.backend-scheme" "prelude-mode?"))) and__13__auto))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported stdlib fn `" (jolt-get fnode (keyword #f "ns")) "/" (jolt-get fnode (keyword #f "name")) "` (no core on Chez yet)") (jolt-hash-map))) (if (jolt= (keyword #f "host-static") (jolt-get fnode (keyword #f "op"))) (jolt-invoke (var-deref "clojure.core" "str") "(host-static-call " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get fnode (keyword #f "class"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get fnode (keyword #f "member"))) (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) ")") (if (jolt= (keyword #f "host") (jolt-get fnode (keyword #f "op"))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported host call `" (jolt-get fnode (keyword #f "name")) "`") (jolt-hash-map))) (if (jolt-truthy? (let* ((and__13__auto (jolt= (keyword #f "local") (jolt-get fnode (keyword #f "op"))))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "jolt.backend-scheme" "*known-procs*") (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-get fnode (keyword #f "name"))))) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt= (keyword #f "var") (jolt-get fnode (keyword #f "op"))) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-invoke " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fnode) " " (jolt-invoke (var-deref "clojure.string" "join") " " args) ")") jolt-nil))))))))))))))))) emit-invoke))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "emit-try" (letrec ((emit-try (lambda (node) (let fnrec1349 ((node node)) (let* ((core (let* ((temp__4__auto (jolt-get node (keyword #f "catch-sym")))) (if (jolt-truthy? temp__4__auto) (let* ((cs temp__4__auto)) (jolt-invoke (var-deref "clojure.core" "str") "(guard (" (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") cs) " (else " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "catch-body"))) ")) " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "body"))) ")")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit") (jolt-get node (keyword #f "body"))))))) (let* ((temp__4__auto (jolt-get node (keyword #f "finally")))) (if (jolt-truthy? temp__4__auto) (let* ((fin temp__4__auto)) (jolt-invoke (var-deref "clojure.core" "str") "(dynamic-wind (lambda () #f) (lambda () " core ") (lambda () " (jolt-invoke (var-deref "jolt.backend-scheme" "emit") fin) "))")) core))))))) emit-try))) (guard (e (#t #f)) (def-var! "jolt.backend-scheme" "returns-scheme-bool?" (letrec ((returns-scheme-bool? (lambda (node) (let fnrec1350 ((node node)) (if (jolt-truthy? (let* ((and__13__auto (jolt= (keyword #f "const") (jolt-get node (keyword #f "op"))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "boolean?") (jolt-get node (keyword #f "val"))) and__13__auto))) #t (if (jolt= (keyword #f "invoke") (jolt-get node (keyword #f "op"))) (let* ((nop (jolt-invoke (var-deref "jolt.backend-scheme" "native-op") (jolt-get node (keyword #f "fn")) (jolt-count (jolt-get node (keyword #f "args")))))) (if (jolt-truthy? (let* ((and__13__auto nop)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.backend-scheme" "bool-returning-ops") nop) and__13__auto))) #t #f)) (if (jolt-truthy? (keyword #f "else")) #f jolt-nil))))))) returns-scheme-bool?))) (guard (e (#t #f)) - (def-var! "jolt.backend-scheme" "emit" (letrec ((emit (lambda (node) (let fnrec1351 ((node node)) (let* ((G__34 (jolt-get node (keyword #f "op")))) (if (jolt= G__34 (keyword #f "const")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-const") (jolt-get node (keyword #f "val"))) (if (jolt= G__34 (keyword #f "local")) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-get node (keyword #f "name"))) (if (jolt= G__34 (keyword #f "var")) (let* ((core-proc (let* ((and__13__auto (jolt= "clojure.core" (jolt-get node (keyword #f "ns"))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.backend-scheme" "core-value-procs") (jolt-get node (keyword #f "name"))) and__13__auto)))) (if (jolt-truthy? core-proc) core-proc (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.backend-scheme" "stdlib-var?") node))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "jolt.backend-scheme" "prelude-mode?"))) and__13__auto))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported stdlib ref `" (jolt-get node (keyword #f "ns")) "/" (jolt-get node (keyword #f "name")) "` (no core on Chez yet)") (jolt-hash-map))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(var-deref " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") jolt-nil)))) (if (jolt= G__34 (keyword #f "the-var")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-var " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") (if (jolt= G__34 (keyword #f "host")) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported host ref `" (jolt-get node (keyword #f "name")) "`") (jolt-hash-map))) (if (jolt= G__34 (keyword #f "host-static")) (jolt-invoke (var-deref "clojure.core" "str") "(host-static-ref " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "class"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "member"))) ")") (if (jolt= G__34 (keyword #f "host-new")) (jolt-invoke (var-deref "clojure.core" "str") "(host-new " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "class"))) (let* ((args (jolt-map emit (jolt-get node (keyword #f "args"))))) (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args)))) ")") (if (jolt= G__34 (keyword #f "if")) (let* ((test (jolt-get node (keyword #f "test"))) (t (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "returns-scheme-bool?") test)) (jolt-invoke emit test) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-truthy? " (jolt-invoke emit test) ")")))) (jolt-invoke (var-deref "clojure.core" "str") "(if " t " " (jolt-invoke emit (jolt-get node (keyword #f "then"))) " " (jolt-invoke emit (jolt-get node (keyword #f "else"))) ")")) (if (jolt= G__34 (keyword #f "do")) (jolt-invoke (var-deref "clojure.core" "str") "(begin " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map emit (jolt-get node (keyword #f "statements")))) (if (jolt-empty? (jolt-get node (keyword #f "statements"))) "" " ") (jolt-invoke emit (jolt-get node (keyword #f "ret"))) ")") (if (jolt= G__34 (keyword #f "invoke")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-invoke") node) (if (jolt= G__34 (keyword #f "vector")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-vector" (jolt-map emit (jolt-get node (keyword #f "items")))) (if (jolt= G__34 (keyword #f "set")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-hash-set" (jolt-map emit (jolt-get node (keyword #f "items")))) (if (jolt= G__34 (keyword #f "map")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-hash-map" (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (p) (let fnrec1352 ((p p)) (let* ((_o$1353 (jolt-invoke emit (jolt-nth p 0.0))) (_o$1354 (jolt-invoke emit (jolt-nth p 1.0)))) (jolt-vector _o$1353 _o$1354)))) (jolt-get node (keyword #f "pairs")))) (if (jolt= G__34 (keyword #f "quote")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-get node (keyword #f "form"))) (if (jolt= G__34 (keyword #f "throw")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-throw " (jolt-invoke emit (jolt-get node (keyword #f "expr"))) ")") (if (jolt= G__34 (keyword #f "try")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-try") node) (if (jolt= G__34 (keyword #f "regex")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-regex " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "inst")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-inst-from-string " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "uuid")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-uuid-from-string " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "host-call")) (let* ((m (jolt-get node (keyword #f "method"))) (target (jolt-invoke emit (jolt-get node (keyword #f "target")))) (args (jolt-map emit (jolt-get node (keyword #f "args"))))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "supported-host-methods") m)) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-host-call " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") m) " " target (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) ")") (jolt-invoke (var-deref "clojure.core" "str") "(record-method-dispatch " target " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") m) " (jolt-vector" (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) "))"))) (if (jolt= G__34 (keyword #f "let")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-let") node) (if (jolt= G__34 (keyword #f "loop")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-loop") node) (if (jolt= G__34 (keyword #f "recur")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-recur") node) (if (jolt= G__34 (keyword #f "fn")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-fn") node) (if (jolt= G__34 (keyword #f "def")) (if (jolt-truthy? (jolt-get node (keyword #f "no-init"))) (jolt-invoke (var-deref "clojure.core" "str") "(declare-var! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "jmeta-nonempty?") (jolt-get node (keyword #f "meta")))) (jolt-invoke (var-deref "clojure.core" "str") "(def-var-with-meta! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) " " (jolt-invoke emit (jolt-get node (keyword #f "init"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-get node (keyword #f "meta"))) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(def-var! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) " " (jolt-invoke emit (jolt-get node (keyword #f "init"))) ")") jolt-nil))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: op not yet ported / unhandled: " (jolt-invoke (var-deref "clojure.core" "pr-str") (jolt-get node (keyword #f "op")))) (jolt-hash-map))))))))))))))))))))))))))))))))) emit))) \ No newline at end of file + (def-var! "jolt.backend-scheme" "emit" (letrec ((emit (lambda (node) (let fnrec1351 ((node node)) (let* ((G__34 (jolt-get node (keyword #f "op")))) (if (jolt= G__34 (keyword #f "const")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-const") (jolt-get node (keyword #f "val"))) (if (jolt= G__34 (keyword #f "local")) (jolt-invoke (var-deref "jolt.backend-scheme" "munge-name") (jolt-get node (keyword #f "name"))) (if (jolt= G__34 (keyword #f "var")) (let* ((core-proc (let* ((and__13__auto (jolt= "clojure.core" (jolt-get node (keyword #f "ns"))))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "jolt.backend-scheme" "core-value-procs") (jolt-get node (keyword #f "name"))) and__13__auto)))) (if (jolt-truthy? core-proc) core-proc (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "jolt.backend-scheme" "stdlib-var?") node))) (if (jolt-truthy? and__13__auto) (jolt-not (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "jolt.backend-scheme" "prelude-mode?"))) and__13__auto))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported stdlib ref `" (jolt-get node (keyword #f "ns")) "/" (jolt-get node (keyword #f "name")) "` (no core on Chez yet)") (jolt-hash-map))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(var-deref " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") jolt-nil)))) (if (jolt= G__34 (keyword #f "the-var")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-var " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") (if (jolt= G__34 (keyword #f "host")) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: unsupported host ref `" (jolt-get node (keyword #f "name")) "`") (jolt-hash-map))) (if (jolt= G__34 (keyword #f "host-static")) (jolt-invoke (var-deref "clojure.core" "str") "(host-static-ref " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "class"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "member"))) ")") (if (jolt= G__34 (keyword #f "host-new")) (jolt-invoke (var-deref "clojure.core" "str") "(host-new " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "class"))) (let* ((args (jolt-map emit (jolt-get node (keyword #f "args"))))) (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args)))) ")") (if (jolt= G__34 (keyword #f "if")) (let* ((test (jolt-get node (keyword #f "test"))) (t (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "returns-scheme-bool?") test)) (jolt-invoke emit test) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-truthy? " (jolt-invoke emit test) ")")))) (jolt-invoke (var-deref "clojure.core" "str") "(if " t " " (jolt-invoke emit (jolt-get node (keyword #f "then"))) " " (jolt-invoke emit (jolt-get node (keyword #f "else"))) ")")) (if (jolt= G__34 (keyword #f "do")) (jolt-invoke (var-deref "clojure.core" "str") "(begin " (jolt-invoke (var-deref "clojure.string" "join") " " (jolt-map emit (jolt-get node (keyword #f "statements")))) (if (jolt-empty? (jolt-get node (keyword #f "statements"))) "" " ") (jolt-invoke emit (jolt-get node (keyword #f "ret"))) ")") (if (jolt= G__34 (keyword #f "invoke")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-invoke") node) (if (jolt= G__34 (keyword #f "vector")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-vector" (jolt-map emit (jolt-get node (keyword #f "items")))) (if (jolt= G__34 (keyword #f "set")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-hash-set" (jolt-map emit (jolt-get node (keyword #f "items")))) (if (jolt= G__34 (keyword #f "map")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-ordered") "jolt-hash-map" (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (p) (let fnrec1352 ((p p)) (let* ((_o$1353 (jolt-invoke emit (jolt-nth p 0))) (_o$1354 (jolt-invoke emit (jolt-nth p 1)))) (jolt-vector _o$1353 _o$1354)))) (jolt-get node (keyword #f "pairs")))) (if (jolt= G__34 (keyword #f "quote")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-get node (keyword #f "form"))) (if (jolt= G__34 (keyword #f "throw")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-throw " (jolt-invoke emit (jolt-get node (keyword #f "expr"))) ")") (if (jolt= G__34 (keyword #f "try")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-try") node) (if (jolt= G__34 (keyword #f "regex")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-regex " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "inst")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-inst-from-string " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "uuid")) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-uuid-from-string " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "source"))) ")") (if (jolt= G__34 (keyword #f "host-call")) (let* ((m (jolt-get node (keyword #f "method"))) (target (jolt-invoke emit (jolt-get node (keyword #f "target")))) (args (jolt-map emit (jolt-get node (keyword #f "args"))))) (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "supported-host-methods") m)) (jolt-invoke (var-deref "clojure.core" "str") "(jolt-host-call " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") m) " " target (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) ")") (jolt-invoke (var-deref "clojure.core" "str") "(record-method-dispatch " target " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") m) " (jolt-vector" (if (jolt-empty? args) "" (jolt-invoke (var-deref "clojure.core" "str") " " (jolt-invoke (var-deref "clojure.string" "join") " " args))) "))"))) (if (jolt= G__34 (keyword #f "let")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-let") node) (if (jolt= G__34 (keyword #f "loop")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-loop") node) (if (jolt= G__34 (keyword #f "recur")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-recur") node) (if (jolt= G__34 (keyword #f "fn")) (jolt-invoke (var-deref "jolt.backend-scheme" "emit-fn") node) (if (jolt= G__34 (keyword #f "def")) (if (jolt-truthy? (jolt-get node (keyword #f "no-init"))) (jolt-invoke (var-deref "clojure.core" "str") "(declare-var! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) ")") (if (jolt-truthy? (jolt-invoke (var-deref "jolt.backend-scheme" "jmeta-nonempty?") (jolt-get node (keyword #f "meta")))) (jolt-invoke (var-deref "clojure.core" "str") "(def-var-with-meta! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) " " (jolt-invoke emit (jolt-get node (keyword #f "init"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "emit-quoted") (jolt-get node (keyword #f "meta"))) ")") (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "str") "(def-var! " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "ns"))) " " (jolt-invoke (var-deref "jolt.backend-scheme" "chez-str-lit") (jolt-get node (keyword #f "name"))) " " (jolt-invoke emit (jolt-get node (keyword #f "init"))) ")") jolt-nil))) (jolt-throw (jolt-ex-info (jolt-invoke (var-deref "clojure.core" "str") "emit: op not yet ported / unhandled: " (jolt-invoke (var-deref "clojure.core" "pr-str") (jolt-get node (keyword #f "op")))) (jolt-hash-map))))))))))))))))))))))))))))))))) emit))) \ No newline at end of file diff --git a/host/chez/seed/prelude.ss b/host/chez/seed/prelude.ss index 02b788b..8926b9c 100644 --- a/host/chez/seed/prelude.ss +++ b/host/chez/seed/prelude.ss @@ -1,15 +1,15 @@ (guard (e (#t #f)) - (def-var! "clojure.core" "zero?" (letrec ((zero? (lambda (x) (let fnrec951 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") x)) (jolt= x 0.0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "zero? requires a number, got: " x))))))) zero?))) + (def-var! "clojure.core" "zero?" (letrec ((zero? (lambda (x) (let fnrec951 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") x)) (jolt= x 0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "zero? requires a number, got: " x))))))) zero?))) (guard (e (#t #f)) - (def-var! "clojure.core" "pos?" (letrec ((pos? (lambda (x) (let fnrec952 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") x)) (> x 0.0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "pos? requires a number, got: " x))))))) pos?))) + (def-var! "clojure.core" "pos?" (letrec ((pos? (lambda (x) (let fnrec952 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") x)) (> x 0) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "pos? requires a number, got: " x))))))) pos?))) (guard (e (#t #f)) (def-var! "clojure.core" "every?" (letrec ((every? (lambda (pred coll) (let fnrec953 ((pred pred) (coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-seq coll))) #t (if (jolt-truthy? (jolt-invoke pred (jolt-first coll))) (fnrec953 pred (jolt-next coll)) #f)))))) every?))) (guard (e (#t #f)) (def-var! "clojure.core" "empty?" (letrec ((empty? (lambda (coll) (let fnrec954 ((coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") coll)) #t (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") coll)) (jolt-zero? (jolt-count coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") coll)) (jolt-zero? (jolt-count coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "set?") coll)) (jolt-zero? (jolt-count coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") coll)) (jolt-zero? (jolt-count coll)) (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-seq coll))))))))))) empty?))) (guard (e (#t #f)) - (def-var! "clojure.core" "keys" (letrec ((keys (lambda (m) (let fnrec955 ((m m)) (let* ((s (jolt-seq m))) (if (jolt-truthy? s) (jolt-map (lambda (e) (let fnrec956 ((e e)) (jolt-nth e 0.0))) s) jolt-nil)))))) keys))) + (def-var! "clojure.core" "keys" (letrec ((keys (lambda (m) (let fnrec955 ((m m)) (let* ((s (jolt-seq m))) (if (jolt-truthy? s) (jolt-map (lambda (e) (let fnrec956 ((e e)) (jolt-nth e 0))) s) jolt-nil)))))) keys))) (guard (e (#t #f)) - (def-var! "clojure.core" "vals" (letrec ((vals (lambda (m) (let fnrec957 ((m m)) (let* ((s (jolt-seq m))) (if (jolt-truthy? s) (jolt-map (lambda (e) (let fnrec958 ((e e)) (jolt-nth e 1.0))) s) jolt-nil)))))) vals))) + (def-var! "clojure.core" "vals" (letrec ((vals (lambda (m) (let fnrec957 ((m m)) (let* ((s (jolt-seq m))) (if (jolt-truthy? s) (jolt-map (lambda (e) (let fnrec958 ((e e)) (jolt-nth e 1))) s) jolt-nil)))))) vals))) (guard (e (#t #f)) (def-var! "clojure.core" "when" (lambda (test . body) (let fnrec959 ((test test) (body (list->cseq body))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") test) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body)))))) @@ -28,7 +28,7 @@ (mark-macro! "clojure.core" "or")) (guard (e (#t #f)) (def-var! "clojure.core" "cond" - (lambda clauses (let fnrec963 ((clauses (list->cseq clauses))) (if (jolt-empty? clauses) jolt-nil (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clauses)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth clauses 1.0)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "cond")) (jolt-drop 2.0 clauses)))))))) + (lambda clauses (let fnrec963 ((clauses (list->cseq clauses))) (if (jolt-empty? clauses) jolt-nil (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clauses)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth clauses 1)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "cond")) (jolt-drop 2 clauses)))))))) (mark-macro! "clojure.core" "cond")) (guard (e (#t #f)) (def-var! "clojure.core" "ns" @@ -47,18 +47,18 @@ (lambda syms (let fnrec972 ((syms (list->cseq syms))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-map (lambda (s) (let fnrec973 ((s s)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") s)))) syms))))) (mark-macro! "clojure.core" "declare")) (guard (e (#t #f)) - (def-var! "clojure.core" "destructure" (letrec ((destructure (lambda (bindings) (let fnrec974 ((bindings bindings)) (let* ((find-or (lambda (or-map nm) (let fnrec975 ((or-map or-map) (nm nm)) (jolt-reduce (lambda (acc k) (let fnrec976 ((acc acc) (k k)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") k))) (if (jolt-truthy? and__13__auto) (jolt= nm (jolt-invoke (var-deref "clojure.core" "name") k)) and__13__auto))) (let* ((_o$977 #t) (_o$978 (jolt-get or-map k))) (jolt-vector _o$977 _o$978)) acc))) (let* ((_o$979 #f) (_o$980 jolt-nil)) (jolt-vector _o$979 _o$980)) (if (jolt-truthy? or-map) (jolt-keys or-map) (jolt-vector)))))) (amp? (lambda (x) (let fnrec981 ((x x)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") x))) (if (jolt-truthy? and__13__auto) (jolt= "&" (jolt-invoke (var-deref "clojure.core" "name") x)) and__13__auto))))) (proc (letrec ((proc (lambda (pat init acc) (let fnrec982 ((pat pat) (init init) (acc acc)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") pat)) (jolt-conj (jolt-conj acc pat) init) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") pat)) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (n (jolt-count pat)) (vloop (letrec ((vloop (lambda (i idx a) (let fnrec986 ((i i) (idx idx) (a a)) (if (< i n) (let* ((elem (jolt-nth pat i))) (if (jolt-truthy? (jolt-invoke amp? elem)) (jolt-invoke vloop (+ i 2.0) idx (jolt-invoke proc (jolt-nth pat (jolt-inc i)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "nthnext")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") idx)) a)) (if (jolt= elem (keyword #f "as")) (jolt-invoke vloop (+ i 2.0) idx (jolt-invoke proc (jolt-nth pat (jolt-inc i)) g a)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke vloop (jolt-inc i) (jolt-inc idx) (jolt-invoke proc elem (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "nth")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") idx) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)) a)) jolt-nil)))) a))))) vloop))) (jolt-invoke vloop 0.0 0.0 (jolt-conj (jolt-conj acc g) init))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") pat)) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (gm (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (coerce (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "sequential?")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "and")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") 1.0) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "count")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "map?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "apply")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "hash-map")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (or-map (jolt-get pat (keyword #f "or"))) (as-sym (jolt-get pat (keyword #f "as"))) (bound (jolt-conj (jolt-conj (jolt-conj (jolt-conj acc g) init) gm) coerce)) (base (if (jolt-truthy? as-sym) (jolt-conj (jolt-conj bound as-sym) gm) bound)) (group (lambda (a kw kind) (let fnrec984 ((a a) (kw kw) (kind kind)) (let* ((names (jolt-get pat kw))) (if (jolt-truthy? names) (jolt-reduce (lambda (aa s) (let fnrec985 ((aa aa) (s s)) (let* ((local (jolt-invoke (var-deref "clojure.core" "name") s)) (nsp (jolt-invoke (var-deref "clojure.core" "namespace") s)) (keyform (if (jolt= kind (keyword #f "kw")) (jolt-invoke (var-deref "clojure.core" "keyword") (if (jolt-truthy? nsp) (jolt-invoke (var-deref "clojure.core" "str") nsp "/" local) local)) (if (jolt= kind (keyword #f "str")) local (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "symbol") nsp local))) jolt-nil)))) (fo (jolt-invoke find-or or-map local))) (jolt-conj (jolt-conj aa (jolt-invoke (var-deref "clojure.core" "symbol") local)) (if (jolt-truthy? (jolt-nth fo 0.0)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") keyform) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth fo 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") keyform))))))) a names) a))))) (g1 (jolt-invoke group base (keyword #f "keys") (keyword #f "kw"))) (g2 (jolt-invoke group g1 (keyword #f "strs") (keyword #f "str"))) (g3 (jolt-invoke group g2 (keyword #f "syms") (keyword #f "sym")))) (jolt-reduce (lambda (a k) (let fnrec983 ((a a) (k k)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") k)) a (jolt-invoke proc k (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-get pat k))) a)))) g3 (jolt-keys pat))) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "unsupported destructuring pattern")) jolt-nil)))))))) proc)) (ploop (letrec ((ploop (lambda (i acc) (let fnrec987 ((i i) (acc acc)) (if (< i (jolt-count bindings)) (jolt-invoke ploop (+ i 2.0) (jolt-invoke proc (jolt-nth bindings i) (jolt-nth bindings (jolt-inc i)) acc)) acc))))) ploop))) (jolt-invoke ploop 0.0 (jolt-vector))))))) destructure))) + (def-var! "clojure.core" "destructure" (letrec ((destructure (lambda (bindings) (let fnrec974 ((bindings bindings)) (let* ((find-or (lambda (or-map nm) (let fnrec975 ((or-map or-map) (nm nm)) (jolt-reduce (lambda (acc k) (let fnrec976 ((acc acc) (k k)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") k))) (if (jolt-truthy? and__13__auto) (jolt= nm (jolt-invoke (var-deref "clojure.core" "name") k)) and__13__auto))) (let* ((_o$977 #t) (_o$978 (jolt-get or-map k))) (jolt-vector _o$977 _o$978)) acc))) (let* ((_o$979 #f) (_o$980 jolt-nil)) (jolt-vector _o$979 _o$980)) (if (jolt-truthy? or-map) (jolt-keys or-map) (jolt-vector)))))) (amp? (lambda (x) (let fnrec981 ((x x)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") x))) (if (jolt-truthy? and__13__auto) (jolt= "&" (jolt-invoke (var-deref "clojure.core" "name") x)) and__13__auto))))) (proc (letrec ((proc (lambda (pat init acc) (let fnrec982 ((pat pat) (init init) (acc acc)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") pat)) (jolt-conj (jolt-conj acc pat) init) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") pat)) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (n (jolt-count pat)) (vloop (letrec ((vloop (lambda (i idx a) (let fnrec986 ((i i) (idx idx) (a a)) (if (< i n) (let* ((elem (jolt-nth pat i))) (if (jolt-truthy? (jolt-invoke amp? elem)) (jolt-invoke vloop (+ i 2) idx (jolt-invoke proc (jolt-nth pat (jolt-inc i)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "nthnext")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") idx)) a)) (if (jolt= elem (keyword #f "as")) (jolt-invoke vloop (+ i 2) idx (jolt-invoke proc (jolt-nth pat (jolt-inc i)) g a)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke vloop (jolt-inc i) (jolt-inc idx) (jolt-invoke proc elem (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "nth")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") idx) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)) a)) jolt-nil)))) a))))) vloop))) (jolt-invoke vloop 0 0 (jolt-conj (jolt-conj acc g) init))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") pat)) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (gm (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))) (coerce (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "sequential?")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "and")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") 1) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "count")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "map?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "apply")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "hash-map")) (jolt-invoke (var-deref "clojure.core" "__sq1") g))))) (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (or-map (jolt-get pat (keyword #f "or"))) (as-sym (jolt-get pat (keyword #f "as"))) (bound (jolt-conj (jolt-conj (jolt-conj (jolt-conj acc g) init) gm) coerce)) (base (if (jolt-truthy? as-sym) (jolt-conj (jolt-conj bound as-sym) gm) bound)) (group (lambda (a kw kind) (let fnrec984 ((a a) (kw kw) (kind kind)) (let* ((names (jolt-get pat kw))) (if (jolt-truthy? names) (jolt-reduce (lambda (aa s) (let fnrec985 ((aa aa) (s s)) (let* ((local (jolt-invoke (var-deref "clojure.core" "name") s)) (nsp (jolt-invoke (var-deref "clojure.core" "namespace") s)) (keyform (if (jolt= kind (keyword #f "kw")) (jolt-invoke (var-deref "clojure.core" "keyword") (if (jolt-truthy? nsp) (jolt-invoke (var-deref "clojure.core" "str") nsp "/" local) local)) (if (jolt= kind (keyword #f "str")) local (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "symbol") nsp local))) jolt-nil)))) (fo (jolt-invoke find-or or-map local))) (jolt-conj (jolt-conj aa (jolt-invoke (var-deref "clojure.core" "symbol") local)) (if (jolt-truthy? (jolt-nth fo 0)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") keyform) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth fo 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") keyform))))))) a names) a))))) (g1 (jolt-invoke group base (keyword #f "keys") (keyword #f "kw"))) (g2 (jolt-invoke group g1 (keyword #f "strs") (keyword #f "str"))) (g3 (jolt-invoke group g2 (keyword #f "syms") (keyword #f "sym")))) (jolt-reduce (lambda (a k) (let fnrec983 ((a a) (k k)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") k)) a (jolt-invoke proc k (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") gm) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-get pat k))) a)))) g3 (jolt-keys pat))) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "unsupported destructuring pattern")) jolt-nil)))))))) proc)) (ploop (letrec ((ploop (lambda (i acc) (let fnrec987 ((i i) (acc acc)) (if (< i (jolt-count bindings)) (jolt-invoke ploop (+ i 2) (jolt-invoke proc (jolt-nth bindings i) (jolt-nth bindings (jolt-inc i)) acc)) acc))))) ploop))) (jolt-invoke ploop 0 (jolt-vector))))))) destructure))) (guard (e (#t #f)) (def-var! "clojure.core" "let" (lambda (bindings . body) (let fnrec988 ((bindings bindings) (body (list->cseq body))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "destructure") bindings))) body)))) (mark-macro! "clojure.core" "let")) (guard (e (#t #f)) (def-var! "clojure.core" "loop" - (lambda (bindings . body) (let fnrec989 ((bindings bindings) (body (list->cseq body))) (let* ((d (jolt-invoke (var-deref "clojure.core" "destructure") bindings))) (if (jolt= d bindings) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "loop*")) (jolt-invoke (var-deref "clojure.core" "__sq1") bindings) body) (let* ((bs (jolt-invoke (var-deref "clojure.core" "take-nth") 2.0 bindings)) (vs (jolt-invoke (var-deref "clojure.core" "take-nth") 2.0 (jolt-drop 1.0 bindings))) (gs (jolt-map (lambda (b) (let fnrec990 ((b b)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") b)) b (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))))) bs)) (outer (jolt-reduce (lambda (acc t) (let fnrec991 ((acc acc) (t t)) (let* ((b (jolt-nth t 0.0)) (v (jolt-nth t 1.0)) (g (jolt-nth t 2.0))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") b)) (jolt-conj (jolt-conj acc g) v) (jolt-conj (jolt-conj (jolt-conj (jolt-conj acc g) v) b) g))))) (jolt-vector) (jolt-map jolt-vector bs vs gs))) (inner (jolt-reduce (lambda (acc t) (let fnrec992 ((acc acc) (t t)) (jolt-conj (jolt-conj acc (jolt-nth t 0.0)) (jolt-nth t 1.0)))) (jolt-vector) (jolt-map jolt-vector bs gs))) (loopv (jolt-reduce (lambda (acc g) (let fnrec993 ((acc acc) (g g)) (jolt-conj (jolt-conj acc g) g))) (jolt-vector) gs))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") outer)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "loop*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") loopv)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") inner)) body))))))))))) + (lambda (bindings . body) (let fnrec989 ((bindings bindings) (body (list->cseq body))) (let* ((d (jolt-invoke (var-deref "clojure.core" "destructure") bindings))) (if (jolt= d bindings) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "loop*")) (jolt-invoke (var-deref "clojure.core" "__sq1") bindings) body) (let* ((bs (jolt-invoke (var-deref "clojure.core" "take-nth") 2 bindings)) (vs (jolt-invoke (var-deref "clojure.core" "take-nth") 2 (jolt-drop 1 bindings))) (gs (jolt-map (lambda (b) (let fnrec990 ((b b)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") b)) b (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") )))))) bs)) (outer (jolt-reduce (lambda (acc t) (let fnrec991 ((acc acc) (t t)) (let* ((b (jolt-nth t 0)) (v (jolt-nth t 1)) (g (jolt-nth t 2))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") b)) (jolt-conj (jolt-conj acc g) v) (jolt-conj (jolt-conj (jolt-conj (jolt-conj acc g) v) b) g))))) (jolt-vector) (jolt-map jolt-vector bs vs gs))) (inner (jolt-reduce (lambda (acc t) (let fnrec992 ((acc acc) (t t)) (jolt-conj (jolt-conj acc (jolt-nth t 0)) (jolt-nth t 1)))) (jolt-vector) (jolt-map jolt-vector bs gs))) (loopv (jolt-reduce (lambda (acc g) (let fnrec993 ((acc acc) (g g)) (jolt-conj (jolt-conj acc g) g))) (jolt-vector) gs))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") outer)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "loop*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") loopv)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") inner)) body))))))))))) (mark-macro! "clojure.core" "loop")) (guard (e (#t #f)) (def-var! "clojure.core" "fn" - (lambda raw (let fnrec994 ((raw (list->cseq raw))) (let* ((nm (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first raw))) (jolt-first raw) jolt-nil)) (aftn (if (jolt-truthy? nm) (jolt-next raw) raw)) (unhint (lambda (x) (let fnrec995 ((x x)) (if (jolt-truthy? (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") x)) (jolt= (jolt-symbol #f "with-meta") (jolt-first x)) #f)) (jolt-nth x 1.0) x)))) (md (letrec ((go (lambda (ps nps lets) (let fnrec996 ((ps ps) (nps nps) (lets lets)) (if (jolt-truthy? (jolt-seq ps)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first ps))) (jolt-invoke go (jolt-next ps) (jolt-conj nps (jolt-first ps)) lets) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") ))))) (jolt-invoke go (jolt-next ps) (jolt-conj nps g) (jolt-conj (jolt-conj lets (jolt-first ps)) g)))) (let* ((_o$997 nps) (_o$998 lets)) (jolt-vector _o$997 _o$998))))))) go)) (mk (lambda (sig) (let fnrec999 ((sig sig)) (let* ((ps (jolt-invoke unhint (jolt-first sig))) (hinted (jolt-not (jolt= ps (jolt-first sig)))) (r (jolt-invoke md (jolt-seq ps) (jolt-vector) (jolt-vector)))) (if (jolt-truthy? (if (jolt-empty? (jolt-nth r 1.0)) (jolt-not hinted) #f)) sig (let* ((pv (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-nth r 0.0))) (lv (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-nth r 1.0)))) (if (jolt-empty? (jolt-nth r 1.0)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") pv) (jolt-rest sig)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") pv) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") lv) (jolt-rest sig)))))))))))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") (jolt-invoke unhint (jolt-first aftn)))) (let* ((a (jolt-invoke mk aftn))) (if (jolt-truthy? nm) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") nm) a) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) a))) (let* ((as (jolt-invoke (var-deref "clojure.core" "vec") (jolt-map mk aftn)))) (if (jolt-truthy? nm) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") nm) as) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) as)))))))) + (lambda raw (let fnrec994 ((raw (list->cseq raw))) (let* ((nm (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first raw))) (jolt-first raw) jolt-nil)) (aftn (if (jolt-truthy? nm) (jolt-next raw) raw)) (unhint (lambda (x) (let fnrec995 ((x x)) (if (jolt-truthy? (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") x)) (jolt= (jolt-symbol #f "with-meta") (jolt-first x)) #f)) (jolt-nth x 1) x)))) (md (letrec ((go (lambda (ps nps lets) (let fnrec996 ((ps ps) (nps nps) (lets lets)) (if (jolt-truthy? (jolt-seq ps)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first ps))) (jolt-invoke go (jolt-next ps) (jolt-conj nps (jolt-first ps)) lets) (let* ((g (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") ))))) (jolt-invoke go (jolt-next ps) (jolt-conj nps g) (jolt-conj (jolt-conj lets (jolt-first ps)) g)))) (let* ((_o$997 nps) (_o$998 lets)) (jolt-vector _o$997 _o$998))))))) go)) (mk (lambda (sig) (let fnrec999 ((sig sig)) (let* ((ps (jolt-invoke unhint (jolt-first sig))) (hinted (jolt-not (jolt= ps (jolt-first sig)))) (r (jolt-invoke md (jolt-seq ps) (jolt-vector) (jolt-vector)))) (if (jolt-truthy? (if (jolt-empty? (jolt-nth r 1)) (jolt-not hinted) #f)) sig (let* ((pv (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-nth r 0))) (lv (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-nth r 1)))) (if (jolt-empty? (jolt-nth r 1)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") pv) (jolt-rest sig)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") pv) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") lv) (jolt-rest sig)))))))))))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") (jolt-invoke unhint (jolt-first aftn)))) (let* ((a (jolt-invoke mk aftn))) (if (jolt-truthy? nm) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") nm) a) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) a))) (let* ((as (jolt-invoke (var-deref "clojure.core" "vec") (jolt-map mk aftn)))) (if (jolt-truthy? nm) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") nm) as) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) as)))))))) (mark-macro! "clojure.core" "fn")) (guard (e (#t #f)) (def-var! "clojure.core" "defn" @@ -72,15 +72,15 @@ (def-var! "clojure.core" "fresh-sym" (letrec ((fresh-sym (lambda () (let fnrec1002 () (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") ))))))) fresh-sym))) (guard (e (#t #f)) (def-var! "clojure.core" "cond->" - (lambda (expr . clauses) (let fnrec1003 ((expr expr) (clauses (list->cseq clauses))) (let* ((step (letrec ((step (lambda (prev cls) (let fnrec1004 ((prev prev) (cls cls)) (if (jolt-empty? cls) prev (let* ((t (jolt-first cls)) (f (jolt-nth cls 1.0)) (gn (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (call (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first f)) (jolt-invoke (var-deref "clojure.core" "__sq1") prev) (jolt-rest f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") f) (jolt-invoke (var-deref "clojure.core" "__sq1") prev))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") gn) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") t) (jolt-invoke (var-deref "clojure.core" "__sq1") call) (jolt-invoke (var-deref "clojure.core" "__sq1") prev))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke step gn (jolt-drop 2.0 cls)))))))))) step)) (g0 (jolt-invoke (var-deref "clojure.core" "fresh-sym") ))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g0) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke step g0 clauses))))))) + (lambda (expr . clauses) (let fnrec1003 ((expr expr) (clauses (list->cseq clauses))) (let* ((step (letrec ((step (lambda (prev cls) (let fnrec1004 ((prev prev) (cls cls)) (if (jolt-empty? cls) prev (let* ((t (jolt-first cls)) (f (jolt-nth cls 1)) (gn (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (call (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first f)) (jolt-invoke (var-deref "clojure.core" "__sq1") prev) (jolt-rest f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") f) (jolt-invoke (var-deref "clojure.core" "__sq1") prev))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") gn) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") t) (jolt-invoke (var-deref "clojure.core" "__sq1") call) (jolt-invoke (var-deref "clojure.core" "__sq1") prev))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke step gn (jolt-drop 2 cls)))))))))) step)) (g0 (jolt-invoke (var-deref "clojure.core" "fresh-sym") ))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g0) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke step g0 clauses))))))) (mark-macro! "clojure.core" "cond->")) (guard (e (#t #f)) (def-var! "clojure.core" "case" - (lambda (expr . clauses) (let fnrec1005 ((expr expr) (clauses (list->cseq clauses))) (let* ((g (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (mk-const (lambda (c) (let fnrec1006 ((c c)) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "symbol?") c))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.core" "seq?") c)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") c)) c)))) (mk-test (lambda (c) (let fnrec1007 ((c c)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") c)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "or")) (jolt-map (lambda (v) (let fnrec1008 ((v v)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-const v))))) c)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-const c))))))) (collect (letrec ((collect (lambda (cls acc) (let fnrec1009 ((cls cls) (acc acc)) (if (jolt-truthy? (let* ((or__14__auto (jolt-empty? cls))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-empty? (jolt-rest cls))))) acc (let* ((t (jolt-first cls)) (acc (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") t)) (jolt-reduce jolt-conj acc t) (jolt-conj acc t)))) (jolt-invoke collect (jolt-drop 2.0 cls) acc))))))) collect)) (first-dup (letrec ((fd (lambda (items seen) (let fnrec1010 ((items items) (seen seen)) (if (jolt-empty? items) jolt-nil (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-reduce (lambda (f s) (let fnrec1011 ((f f) (s s)) (let* ((or__14__auto f)) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= s x))))) #f seen)) (jolt-vector x) (jolt-invoke fd (jolt-rest items) (jolt-conj seen x))))))))) fd)) (dup (jolt-invoke first-dup (jolt-invoke collect clauses (jolt-vector)) (jolt-vector))) (build (letrec ((build (lambda (cls) (let fnrec1012 ((cls cls)) (if (jolt-empty? cls) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "str")) (jolt-invoke (var-deref "clojure.core" "__sq1") "No matching clause: ") (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") ))))) (if (jolt-empty? (jolt-rest cls)) (jolt-first cls) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-test (jolt-first cls))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth cls 1.0)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke build (jolt-drop 2.0 cls)))))))))) build))) (if (jolt-truthy? dup) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Duplicate case test constant: " (jolt-first dup))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke build clauses)))))))) + (lambda (expr . clauses) (let fnrec1005 ((expr expr) (clauses (list->cseq clauses))) (let* ((g (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (mk-const (lambda (c) (let fnrec1006 ((c c)) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "symbol?") c))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.core" "seq?") c)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") c)) c)))) (mk-test (lambda (c) (let fnrec1007 ((c c)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") c)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "or")) (jolt-map (lambda (v) (let fnrec1008 ((v v)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-const v))))) c)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "=")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-const c))))))) (collect (letrec ((collect (lambda (cls acc) (let fnrec1009 ((cls cls) (acc acc)) (if (jolt-truthy? (let* ((or__14__auto (jolt-empty? cls))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-empty? (jolt-rest cls))))) acc (let* ((t (jolt-first cls)) (acc (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") t)) (jolt-reduce jolt-conj acc t) (jolt-conj acc t)))) (jolt-invoke collect (jolt-drop 2 cls) acc))))))) collect)) (first-dup (letrec ((fd (lambda (items seen) (let fnrec1010 ((items items) (seen seen)) (if (jolt-empty? items) jolt-nil (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-reduce (lambda (f s) (let fnrec1011 ((f f) (s s)) (let* ((or__14__auto f)) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= s x))))) #f seen)) (jolt-vector x) (jolt-invoke fd (jolt-rest items) (jolt-conj seen x))))))))) fd)) (dup (jolt-invoke first-dup (jolt-invoke collect clauses (jolt-vector)) (jolt-vector))) (build (letrec ((build (lambda (cls) (let fnrec1012 ((cls cls)) (if (jolt-empty? cls) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "str")) (jolt-invoke (var-deref "clojure.core" "__sq1") "No matching clause: ") (jolt-invoke (var-deref "clojure.core" "__sq1") g))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") ))))) (if (jolt-empty? (jolt-rest cls)) (jolt-first cls) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke mk-test (jolt-first cls))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth cls 1)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke build (jolt-drop 2 cls)))))))))) build))) (if (jolt-truthy? dup) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Duplicate case test constant: " (jolt-first dup))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke build clauses)))))))) (mark-macro! "clojure.core" "case")) (guard (e (#t #f)) (def-var! "clojure.core" "for" - (lambda (bindings body) (let fnrec1013 ((bindings bindings) (body body)) (let* ((scan (letrec ((scan (lambda (bvec i bind coll mods) (let fnrec1014 ((bvec bvec) (i i) (bind bind) (coll coll) (mods mods)) (if (jolt-truthy? (let* ((and__13__auto (< i (jolt-count bvec)))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "keyword?") (jolt-nth bvec i)) and__13__auto))) (let* ((k (jolt-nth bvec i)) (v (jolt-nth bvec (jolt-inc i)))) (if (jolt= k (keyword #f "when")) (jolt-invoke scan bvec (+ i 2.0) bind coll (jolt-conj mods (let* ((_o$1021 (keyword #f "when")) (_o$1022 v)) (jolt-vector _o$1021 _o$1022)))) (if (jolt= k (keyword #f "let")) (jolt-invoke scan bvec (+ i 2.0) bind coll (jolt-conj mods (let* ((_o$1019 (keyword #f "let")) (_o$1020 v)) (jolt-vector _o$1019 _o$1020)))) (if (jolt= k (keyword #f "while")) (jolt-invoke scan bvec (+ i 2.0) bind (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "take-while")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") v))) (jolt-invoke (var-deref "clojure.core" "__sq1") coll)) mods) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke scan bvec (jolt-inc i) bind coll mods) jolt-nil))))) (let* ((_o$1015 i) (_o$1016 bind) (_o$1017 coll) (_o$1018 mods)) (jolt-vector _o$1015 _o$1016 _o$1017 _o$1018))))))) scan)) (parse-groups (letrec ((parse-groups (lambda (bvec i groups) (let fnrec1023 ((bvec bvec) (i i) (groups groups)) (if (>= i (jolt-count bvec)) groups (let* ((r (jolt-invoke scan bvec (+ i 2.0) (jolt-nth bvec i) (jolt-nth bvec (jolt-inc i)) (jolt-vector)))) (jolt-invoke parse-groups bvec (jolt-nth r 0.0) (jolt-conj groups (let* ((_o$1024 (jolt-nth r 1.0)) (_o$1025 (jolt-nth r 2.0)) (_o$1026 (jolt-nth r 3.0))) (jolt-vector _o$1024 _o$1025 _o$1026)))))))))) parse-groups)) (wrap-mods (letrec ((wrap-mods (lambda (mods inner) (let fnrec1027 ((mods mods) (inner inner)) (if (jolt-empty? mods) inner (let* ((m (jolt-first mods)) (sub (jolt-invoke wrap-mods (jolt-rest mods) inner))) (if (jolt= (jolt-first m) (keyword #f "when")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth m 1.0)) (jolt-invoke (var-deref "clojure.core" "__sq1") sub) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") ))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth m 1.0)) (jolt-invoke (var-deref "clojure.core" "__sq1") sub))))))))) wrap-mods)) (build (letrec ((build (lambda (idx groups) (let fnrec1028 ((idx idx) (groups groups)) (let* ((g (jolt-nth groups idx)) (my-bind (jolt-nth g 0.0)) (my-coll (jolt-nth g 1.0)) (my-mods (jolt-nth g 2.0)) (is-last (jolt= idx (jolt-dec (jolt-count groups))))) (if (jolt-truthy? (let* ((and__13__auto is-last)) (if (jolt-truthy? and__13__auto) (jolt-empty? my-mods) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "map")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") my-bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") body))) (jolt-invoke (var-deref "clojure.core" "__sq1") my-coll)) (let* ((base (if (jolt-truthy? is-last) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "list")) (jolt-invoke (var-deref "clojure.core" "__sq1") body)) (jolt-invoke build (jolt-inc idx) groups)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "mapcat")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") my-bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke wrap-mods my-mods base)))) (jolt-invoke (var-deref "clojure.core" "__sq1") my-coll))))))))) build))) (if (>= (jolt-count bindings) 2.0) (jolt-invoke build 0.0 (jolt-invoke parse-groups bindings 0.0 (jolt-vector))) body))))) + (lambda (bindings body) (let fnrec1013 ((bindings bindings) (body body)) (let* ((scan (letrec ((scan (lambda (bvec i bind coll mods) (let fnrec1014 ((bvec bvec) (i i) (bind bind) (coll coll) (mods mods)) (if (jolt-truthy? (let* ((and__13__auto (< i (jolt-count bvec)))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "keyword?") (jolt-nth bvec i)) and__13__auto))) (let* ((k (jolt-nth bvec i)) (v (jolt-nth bvec (jolt-inc i)))) (if (jolt= k (keyword #f "when")) (jolt-invoke scan bvec (+ i 2) bind coll (jolt-conj mods (let* ((_o$1021 (keyword #f "when")) (_o$1022 v)) (jolt-vector _o$1021 _o$1022)))) (if (jolt= k (keyword #f "let")) (jolt-invoke scan bvec (+ i 2) bind coll (jolt-conj mods (let* ((_o$1019 (keyword #f "let")) (_o$1020 v)) (jolt-vector _o$1019 _o$1020)))) (if (jolt= k (keyword #f "while")) (jolt-invoke scan bvec (+ i 2) bind (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "take-while")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") v))) (jolt-invoke (var-deref "clojure.core" "__sq1") coll)) mods) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke scan bvec (jolt-inc i) bind coll mods) jolt-nil))))) (let* ((_o$1015 i) (_o$1016 bind) (_o$1017 coll) (_o$1018 mods)) (jolt-vector _o$1015 _o$1016 _o$1017 _o$1018))))))) scan)) (parse-groups (letrec ((parse-groups (lambda (bvec i groups) (let fnrec1023 ((bvec bvec) (i i) (groups groups)) (if (>= i (jolt-count bvec)) groups (let* ((r (jolt-invoke scan bvec (+ i 2) (jolt-nth bvec i) (jolt-nth bvec (jolt-inc i)) (jolt-vector)))) (jolt-invoke parse-groups bvec (jolt-nth r 0) (jolt-conj groups (let* ((_o$1024 (jolt-nth r 1)) (_o$1025 (jolt-nth r 2)) (_o$1026 (jolt-nth r 3))) (jolt-vector _o$1024 _o$1025 _o$1026)))))))))) parse-groups)) (wrap-mods (letrec ((wrap-mods (lambda (mods inner) (let fnrec1027 ((mods mods) (inner inner)) (if (jolt-empty? mods) inner (let* ((m (jolt-first mods)) (sub (jolt-invoke wrap-mods (jolt-rest mods) inner))) (if (jolt= (jolt-first m) (keyword #f "when")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth m 1)) (jolt-invoke (var-deref "clojure.core" "__sq1") sub) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") ))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth m 1)) (jolt-invoke (var-deref "clojure.core" "__sq1") sub))))))))) wrap-mods)) (build (letrec ((build (lambda (idx groups) (let fnrec1028 ((idx idx) (groups groups)) (let* ((g (jolt-nth groups idx)) (my-bind (jolt-nth g 0)) (my-coll (jolt-nth g 1)) (my-mods (jolt-nth g 2)) (is-last (jolt= idx (jolt-dec (jolt-count groups))))) (if (jolt-truthy? (let* ((and__13__auto is-last)) (if (jolt-truthy? and__13__auto) (jolt-empty? my-mods) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "map")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") my-bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") body))) (jolt-invoke (var-deref "clojure.core" "__sq1") my-coll)) (let* ((base (if (jolt-truthy? is-last) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "list")) (jolt-invoke (var-deref "clojure.core" "__sq1") body)) (jolt-invoke build (jolt-inc idx) groups)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "mapcat")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") my-bind))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke wrap-mods my-mods base)))) (jolt-invoke (var-deref "clojure.core" "__sq1") my-coll))))))))) build))) (if (>= (jolt-count bindings) 2) (jolt-invoke build 0 (jolt-invoke parse-groups bindings 0 (jolt-vector))) body))))) (mark-macro! "clojure.core" "for")) (guard (e (#t #f)) (def-var! "clojure.core" "doseq" @@ -88,7 +88,7 @@ (mark-macro! "clojure.core" "doseq")) (guard (e (#t #f)) (def-var! "clojure.core" "when-let" - (lambda (bindings . body) (let fnrec1030 ((bindings bindings) (body (list->cseq body))) (let* ((form (jolt-invoke bindings 0.0)) (tst (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)))))))) + (lambda (bindings . body) (let fnrec1030 ((bindings bindings) (body (list->cseq body))) (let* ((form (jolt-invoke bindings 0)) (tst (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__15__auto")))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)))))))) (mark-macro! "clojure.core" "when-let")) (guard (e (#t #f)) (def-var! "clojure.core" "lazy-seq" @@ -107,7 +107,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "peek" (letrec ((peek (lambda (coll) (let fnrec1039 ((coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") coll)) jolt-nil (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") coll)) (if (jolt-zero? (jolt-count coll)) jolt-nil (jolt-nth coll (jolt-dec (jolt-count coll)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") coll)) (jolt-first coll) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "peek not supported on: " coll)) jolt-nil)))))))) peek))) (guard (e (#t #f)) - (def-var! "clojure.core" "subvec" (letrec ((subvec (case-lambda ((v start) (let fnrec1040 ((v v) (start start)) (jolt-invoke subvec v start (jolt-count v)))) ((v start end) (let fnrec1041 ((v v) (start start) (end end)) (begin (if (jolt-not (jolt-invoke (var-deref "clojure.core" "vector?") v)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec requires a vector")) jolt-nil) (let* ((coerce (lambda (x) (let fnrec1043 ((x x)) (if (jolt-not (jolt-invoke (var-deref "clojure.core" "number?") x)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec index must be a number")) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not=") x x)) 0.0 (if (jolt-truthy? (keyword #f "else")) (quotient x 1.0) jolt-nil)))))) (s (jolt-invoke coerce start)) (e (jolt-invoke coerce end))) (begin (if (jolt-truthy? (let* ((or__14__auto (< s 0.0))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((or__14__auto (< e s))) (if (jolt-truthy? or__14__auto) or__14__auto (< (jolt-count v) e)))))) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec index out of range: " s " " e)) jolt-nil) (let* ((i s) (acc (jolt-vector))) (let loop1042 ((i i) (acc acc)) (if (< i e) (loop1042 (jolt-inc i) (jolt-conj acc (jolt-nth v i))) acc))))))))))) subvec))) + (def-var! "clojure.core" "subvec" (letrec ((subvec (case-lambda ((v start) (let fnrec1040 ((v v) (start start)) (jolt-invoke subvec v start (jolt-count v)))) ((v start end) (let fnrec1041 ((v v) (start start) (end end)) (begin (if (jolt-not (jolt-invoke (var-deref "clojure.core" "vector?") v)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec requires a vector")) jolt-nil) (let* ((coerce (lambda (x) (let fnrec1043 ((x x)) (if (jolt-not (jolt-invoke (var-deref "clojure.core" "number?") x)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec index must be a number")) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not=") x x)) 0 (if (jolt-truthy? (keyword #f "else")) (quotient x 1) jolt-nil)))))) (s (jolt-invoke coerce start)) (e (jolt-invoke coerce end))) (begin (if (jolt-truthy? (let* ((or__14__auto (< s 0))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((or__14__auto (< e s))) (if (jolt-truthy? or__14__auto) or__14__auto (< (jolt-count v) e)))))) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "subvec index out of range: " s " " e)) jolt-nil) (let* ((i s) (acc (jolt-vector))) (let loop1042 ((i i) (acc acc)) (if (< i e) (loop1042 (jolt-inc i) (jolt-conj acc (jolt-nth v i))) acc))))))))))) subvec))) (guard (e (#t #f)) (def-var! "clojure.core" "mapv" (letrec ((mapv (lambda (f . colls) (let fnrec1044 ((f f) (colls (list->cseq colls))) (jolt-invoke (var-deref "clojure.core" "vec") (jolt-apply jolt-map f colls)))))) mapv))) (guard (e (#t #f)) @@ -137,7 +137,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "constantly" (letrec ((constantly (lambda (x) (let fnrec519 ((x x)) (lambda args (let fnrec520 ((args (list->cseq args))) x)))))) constantly))) (guard (e (#t #f)) - (def-var! "clojure.core" "neg?" (letrec ((neg? (lambda (x) (let fnrec521 ((x x)) (< x 0.0))))) neg?))) + (def-var! "clojure.core" "neg?" (letrec ((neg? (lambda (x) (let fnrec521 ((x x)) (< x 0))))) neg?))) (guard (e (#t #f)) (def-var! "clojure.core" "bit-and" (letrec ((bit-and (case-lambda ((x y) (let fnrec522 ((x x) (y y)) (jolt-invoke (var-deref "clojure.core" "__bit-and") x y))) ((x y . more) (let fnrec523 ((x x) (y y) (more (list->cseq more))) (jolt-reduce (var-deref "clojure.core" "__bit-and") (jolt-invoke (var-deref "clojure.core" "__bit-and") x y) more)))))) bit-and))) (guard (e (#t #f)) @@ -157,7 +157,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "println" (letrec ((println (lambda xs (let fnrec536 ((xs (list->cseq xs))) (begin (jolt-apply (var-deref "clojure.core" "print") xs) (jolt-invoke (var-deref "clojure.core" "__write") "\n") jolt-nil))))) println))) (guard (e (#t #f)) - (def-var! "clojure.core" "frequencies" (letrec ((frequencies (lambda (coll) (let fnrec537 ((coll coll)) (jolt-invoke (var-deref "clojure.core" "persistent!") (jolt-reduce (lambda (counts x) (let fnrec538 ((counts counts) (x x)) (jolt-invoke (var-deref "clojure.core" "assoc!") counts x (jolt-inc (jolt-get counts x 0.0))))) (jolt-invoke (var-deref "clojure.core" "transient") (jolt-hash-map)) coll)))))) frequencies))) + (def-var! "clojure.core" "frequencies" (letrec ((frequencies (lambda (coll) (let fnrec537 ((coll coll)) (jolt-invoke (var-deref "clojure.core" "persistent!") (jolt-reduce (lambda (counts x) (let fnrec538 ((counts counts) (x x)) (jolt-invoke (var-deref "clojure.core" "assoc!") counts x (jolt-inc (jolt-get counts x 0))))) (jolt-invoke (var-deref "clojure.core" "transient") (jolt-hash-map)) coll)))))) frequencies))) (guard (e (#t #f)) (def-var! "clojure.core" "group-by" (letrec ((group-by (lambda (f coll) (let fnrec539 ((f f) (coll coll)) (let* ((tm (jolt-invoke (var-deref "clojure.core" "transient") (jolt-hash-map))) (ks (jolt-reduce (lambda (ks x) (let fnrec541 ((ks ks) (x x)) (let* ((k (jolt-invoke f x)) (b (jolt-get tm k))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") b)) (begin (jolt-invoke (var-deref "clojure.core" "assoc!") tm k (jolt-vector x)) (jolt-invoke (var-deref "clojure.core" "conj!") ks k)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") b)) (begin (jolt-invoke (var-deref "clojure.core" "assoc!") tm k (jolt-invoke (var-deref "clojure.core" "conj!") (jolt-invoke (var-deref "clojure.core" "transient") b) x)) ks) (begin (jolt-invoke (var-deref "clojure.core" "conj!") b x) ks)))))) (jolt-invoke (var-deref "clojure.core" "transient") (jolt-vector)) coll))) (begin (jolt-reduce (lambda (_ k) (let fnrec540 ((_ _) (k k)) (let* ((b (jolt-get tm k))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") b)) jolt-nil (jolt-invoke (var-deref "clojure.core" "assoc!") tm k (jolt-invoke (var-deref "clojure.core" "persistent!") b)))))) jolt-nil (jolt-invoke (var-deref "clojure.core" "persistent!") ks)) (jolt-invoke (var-deref "clojure.core" "persistent!") tm))))))) group-by))) (guard (e (#t #f)) @@ -207,7 +207,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "rational?" (letrec ((rational? (lambda (x) (let fnrec580 ((x x)) (jolt-invoke (var-deref "clojure.core" "int?") x))))) rational?))) (guard (e (#t #f)) - (def-var! "clojure.core" "nat-int?" (letrec ((nat-int? (lambda (x) (let fnrec581 ((x x)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "int?") x))) (if (jolt-truthy? and__13__auto) (>= x 0.0) and__13__auto)))))) nat-int?))) + (def-var! "clojure.core" "nat-int?" (letrec ((nat-int? (lambda (x) (let fnrec581 ((x x)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "int?") x))) (if (jolt-truthy? and__13__auto) (>= x 0) and__13__auto)))))) nat-int?))) (guard (e (#t #f)) (def-var! "clojure.core" "neg-int?" (letrec ((neg-int? (lambda (x) (let fnrec582 ((x x)) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "int?") x))) (if (jolt-truthy? and__13__auto) (jolt-neg? x) and__13__auto)))))) neg-int?))) (guard (e (#t #f)) @@ -215,9 +215,9 @@ (guard (e (#t #f)) (def-var! "clojure.core" "replicate" (letrec ((replicate (lambda (n x) (let fnrec584 ((n n) (x x)) (jolt-map (lambda (_) (let fnrec585 ((_ _)) x)) (jolt-range n)))))) replicate))) (guard (e (#t #f)) - (def-var! "clojure.core" "take-last" (letrec ((take-last (lambda (n coll) (let fnrec586 ((n n) (coll coll)) (let* ((c (jolt-invoke (var-deref "clojure.core" "vec") coll)) (len (jolt-count c))) (if (jolt-pos? len) (jolt-invoke (var-deref "clojure.core" "subvec") c (max 0.0 (- len n))) jolt-nil)))))) take-last))) + (def-var! "clojure.core" "take-last" (letrec ((take-last (lambda (n coll) (let fnrec586 ((n n) (coll coll)) (let* ((c (jolt-invoke (var-deref "clojure.core" "vec") coll)) (len (jolt-count c))) (if (jolt-pos? len) (jolt-invoke (var-deref "clojure.core" "subvec") c (max 0 (- len n))) jolt-nil)))))) take-last))) (guard (e (#t #f)) - (def-var! "clojure.core" "drop-last" (letrec ((drop-last (case-lambda ((coll) (let fnrec587 ((coll coll)) (jolt-invoke drop-last 1.0 coll))) ((n coll) (let fnrec588 ((n n) (coll coll)) (let* ((c (jolt-invoke (var-deref "clojure.core" "vec") coll))) (jolt-invoke (var-deref "clojure.core" "subvec") c 0.0 (max 0.0 (- (jolt-count c) n))))))))) drop-last))) + (def-var! "clojure.core" "drop-last" (letrec ((drop-last (case-lambda ((coll) (let fnrec587 ((coll coll)) (jolt-invoke drop-last 1 coll))) ((n coll) (let fnrec588 ((n n) (coll coll)) (let* ((c (jolt-invoke (var-deref "clojure.core" "vec") coll))) (jolt-invoke (var-deref "clojure.core" "subvec") c 0 (max 0 (- (jolt-count c) n))))))))) drop-last))) (guard (e (#t #f)) (def-var! "clojure.core" "distinct?" (letrec ((distinct? (case-lambda ((x) (let fnrec589 ((x x)) #t)) ((x y) (let fnrec590 ((x x) (y y)) (jolt-not (jolt= x y)))) ((x y . more) (let fnrec591 ((x x) (y y) (more (list->cseq more))) (if (jolt-not (jolt= x y)) (let* ((s (let* ((_o$593 x) (_o$594 y)) (jolt-hash-set _o$593 _o$594))) (xs more)) (let loop592 ((s s) (xs xs)) (if (jolt-truthy? xs) (let* ((x (jolt-first xs))) (if (jolt-contains? s x) #f (loop592 (jolt-conj s x) (jolt-next xs)))) #t))) #f)))))) distinct?))) (guard (e (#t #f)) @@ -225,7 +225,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "nthnext" (letrec ((nthnext (lambda (coll n) (let fnrec597 ((coll coll) (n n)) (let* ((n n) (xs (jolt-seq coll))) (let loop598 ((n n) (xs xs)) (if (jolt-truthy? (let* ((and__13__auto xs)) (if (jolt-truthy? and__13__auto) (jolt-pos? n) and__13__auto))) (loop598 (jolt-dec n) (jolt-next xs)) xs))))))) nthnext))) (guard (e (#t #f)) - (def-var! "clojure.core" "bounded-count" (letrec ((bounded-count (lambda (n coll) (let fnrec599 ((n n) (coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "counted?") coll)) (jolt-count coll) (let* ((i 0.0) (s (jolt-seq coll))) (let loop600 ((i i) (s s)) (if (jolt-truthy? (let* ((and__13__auto s)) (if (jolt-truthy? and__13__auto) (< i n) and__13__auto))) (loop600 (jolt-inc i) (jolt-next s)) i)))))))) bounded-count))) + (def-var! "clojure.core" "bounded-count" (letrec ((bounded-count (lambda (n coll) (let fnrec599 ((n n) (coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "counted?") coll)) (jolt-count coll) (let* ((i 0) (s (jolt-seq coll))) (let loop600 ((i i) (s s)) (if (jolt-truthy? (let* ((and__13__auto s)) (if (jolt-truthy? and__13__auto) (< i n) and__13__auto))) (loop600 (jolt-inc i) (jolt-next s)) i)))))))) bounded-count))) (guard (e (#t #f)) (def-var! "clojure.core" "run!" (letrec ((run! (lambda (proc coll) (let fnrec601 ((proc proc) (coll coll)) (begin (jolt-reduce (lambda (_ x) (let fnrec602 ((_ _) (x x)) (begin (jolt-invoke proc x) jolt-nil))) jolt-nil coll) jolt-nil))))) run!))) (guard (e (#t #f)) @@ -233,7 +233,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "nthrest" (letrec ((nthrest (lambda (coll n) (let fnrec608 ((coll coll) (n n)) (if (jolt-pos? n) (let* ((or__14__auto (let* ((n n) (xs coll)) (let loop609 ((n n) (xs xs)) (let* ((s (let* ((and__13__auto (jolt-pos? n))) (if (jolt-truthy? and__13__auto) (jolt-seq xs) and__13__auto)))) (if (jolt-truthy? s) (loop609 (jolt-dec n) (jolt-rest s)) (jolt-seq xs))))))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-list ))) coll))))) nthrest))) (guard (e (#t #f)) - (def-var! "clojure.core" "abs" (letrec ((abs (lambda (x) (let fnrec610 ((x x)) (if (jolt-neg? x) (- 0.0 x) x))))) abs))) + (def-var! "clojure.core" "abs" (letrec ((abs (lambda (x) (let fnrec610 ((x x)) (if (jolt-neg? x) (- 0 x) x))))) abs))) (guard (e (#t #f)) (def-var! "clojure.core" "NaN?" (letrec ((NaN? (lambda (x) (let fnrec611 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") x)) (jolt-not (jolt= x x)) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "NaN? requires a number"))))))) NaN?))) (guard (e (#t #f)) @@ -255,15 +255,15 @@ (guard (e (#t #f)) (def-var! "clojure.core" "thread-bound?" (letrec ((thread-bound? (lambda vars (let fnrec622 ((vars (list->cseq vars))) (jolt-invoke (var-deref "clojure.core" "every?") (lambda (v) (let fnrec623 ((v v)) (jolt-invoke (var-deref "clojure.core" "__thread-bound?") v))) vars))))) thread-bound?))) (guard (e (#t #f)) - (def-var! "clojure.core" "key" (letrec ((key (lambda (e) (let fnrec624 ((e e)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map-entry?") e)) (jolt-nth e 0.0) (jolt-throw (jolt-ex-info "key requires a map entry" (jolt-hash-map)))))))) key))) + (def-var! "clojure.core" "key" (letrec ((key (lambda (e) (let fnrec624 ((e e)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map-entry?") e)) (jolt-nth e 0) (jolt-throw (jolt-ex-info "key requires a map entry" (jolt-hash-map)))))))) key))) (guard (e (#t #f)) - (def-var! "clojure.core" "val" (letrec ((val (lambda (e) (let fnrec625 ((e e)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map-entry?") e)) (jolt-nth e 1.0) (jolt-throw (jolt-ex-info "val requires a map entry" (jolt-hash-map)))))))) val))) + (def-var! "clojure.core" "val" (letrec ((val (lambda (e) (let fnrec625 ((e e)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map-entry?") e)) (jolt-nth e 1) (jolt-throw (jolt-ex-info "val requires a map entry" (jolt-hash-map)))))))) val))) (guard (e (#t #f)) (def-var! "clojure.core" "make-hierarchy" (letrec ((make-hierarchy (lambda () (let fnrec626 () (let* ((_o$627 (keyword #f "parents")) (_o$628 (jolt-hash-map)) (_o$629 (keyword #f "descendants")) (_o$630 (jolt-hash-map)) (_o$631 (keyword #f "ancestors")) (_o$632 (jolt-hash-map))) (jolt-hash-map _o$627 _o$628 _o$629 _o$630 _o$631 _o$632)))))) make-hierarchy))) (guard (e (#t #f)) (def-var-with-meta! "clojure.core" "global-hierarchy" (jolt-invoke (var-deref "clojure.core" "atom") (jolt-invoke (var-deref "clojure.core" "make-hierarchy") )) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var! "clojure.core" "isa?" (letrec ((isa? (case-lambda ((child parent) (let fnrec633 ((child child) (parent parent)) (jolt-invoke isa? (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "global-hierarchy")) child parent))) ((h child parent) (let fnrec634 ((h h) (child child) (parent parent)) (let* ((or__14__auto (jolt= child parent))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((or__14__auto (jolt-contains? (jolt-get (jolt-get h (keyword #f "ancestors")) child (jolt-hash-set)) parent))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") parent))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") child))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= (jolt-count parent) (jolt-count child)))) (if (jolt-truthy? and__13__auto) (let* ((ret #t) (i 0.0)) (let loop635 ((ret ret) (i i)) (if (jolt-truthy? (let* ((or__14__auto (jolt-not ret))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= i (jolt-count parent))))) ret (loop635 (jolt-invoke isa? h (jolt-nth child i) (jolt-nth parent i)) (jolt-inc i))))) and__13__auto)) and__13__auto)) and__13__auto))))))))))) isa?))) + (def-var! "clojure.core" "isa?" (letrec ((isa? (case-lambda ((child parent) (let fnrec633 ((child child) (parent parent)) (jolt-invoke isa? (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "global-hierarchy")) child parent))) ((h child parent) (let fnrec634 ((h h) (child child) (parent parent)) (let* ((or__14__auto (jolt= child parent))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((or__14__auto (jolt-contains? (jolt-get (jolt-get h (keyword #f "ancestors")) child (jolt-hash-set)) parent))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") parent))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") child))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt= (jolt-count parent) (jolt-count child)))) (if (jolt-truthy? and__13__auto) (let* ((ret #t) (i 0)) (let loop635 ((ret ret) (i i)) (if (jolt-truthy? (let* ((or__14__auto (jolt-not ret))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= i (jolt-count parent))))) ret (loop635 (jolt-invoke isa? h (jolt-nth child i) (jolt-nth parent i)) (jolt-inc i))))) and__13__auto)) and__13__auto)) and__13__auto))))))))))) isa?))) (guard (e (#t #f)) (def-var! "clojure.core" "parents" (letrec ((parents (case-lambda ((tag) (let fnrec636 ((tag tag)) (jolt-invoke parents (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "global-hierarchy")) tag))) ((h tag) (let fnrec637 ((h h) (tag tag)) (jolt-invoke (var-deref "clojure.core" "not-empty") (jolt-get (jolt-get h (keyword #f "parents")) tag))))))) parents))) (guard (e (#t #f)) @@ -273,7 +273,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "derive" (letrec ((derive (case-lambda ((tag parent) (let fnrec642 ((tag tag) (parent parent)) (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "global-hierarchy") derive tag parent) jolt-nil))) ((h tag parent) (let fnrec643 ((h h) (tag tag) (parent parent)) (let* ((tp (jolt-get h (keyword #f "parents"))) (td (jolt-get h (keyword #f "descendants"))) (ta (jolt-get h (keyword #f "ancestors"))) (tf (lambda (m source sources target targets) (let fnrec650 ((m m) (source source) (sources sources) (target target) (targets targets)) (jolt-reduce (lambda (ret k) (let fnrec651 ((ret ret) (k k)) (jolt-assoc ret k (jolt-reduce jolt-conj (jolt-get targets k (jolt-hash-set)) (jolt-cons target (jolt-get targets target)))))) m (jolt-cons source (jolt-get sources source))))))) (let* ((or__14__auto (if (jolt-not (jolt-contains? (jolt-get tp tag (jolt-hash-set)) parent)) (begin (if (jolt-contains? (jolt-get ta tag (jolt-hash-set)) parent) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") tag " already has " parent " as ancestor")) jolt-nil) (if (jolt-contains? (jolt-get ta parent (jolt-hash-set)) tag) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "Cyclic derivation: " parent " has " tag " as ancestor")) jolt-nil) (let* ((_o$644 (keyword #f "parents")) (_o$645 (jolt-assoc tp tag (jolt-conj (jolt-get tp tag (jolt-hash-set)) parent))) (_o$646 (keyword #f "ancestors")) (_o$647 (jolt-invoke tf ta tag td parent ta)) (_o$648 (keyword #f "descendants")) (_o$649 (jolt-invoke tf td parent ta tag td))) (jolt-hash-map _o$644 _o$645 _o$646 _o$647 _o$648 _o$649))) jolt-nil))) (if (jolt-truthy? or__14__auto) or__14__auto h)))))))) derive))) (guard (e (#t #f)) - (def-var! "clojure.core" "underive" (letrec ((underive (case-lambda ((tag parent) (let fnrec652 ((tag tag) (parent parent)) (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "global-hierarchy") underive tag parent) jolt-nil))) ((h tag parent) (let fnrec653 ((h h) (tag tag) (parent parent)) (let* ((parent-map (jolt-get h (keyword #f "parents"))) (childs-parents (if (jolt-truthy? (jolt-get parent-map tag)) (jolt-invoke (var-deref "clojure.core" "disj") (jolt-get parent-map tag) parent) (jolt-hash-set))) (new-parents (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not-empty") childs-parents)) (jolt-assoc parent-map tag childs-parents) (jolt-dissoc parent-map tag))) (deriv-seq (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (e) (let fnrec655 ((e e)) (jolt-cons (jolt-invoke (var-deref "clojure.core" "key") e) (jolt-invoke (var-deref "clojure.core" "interpose") (jolt-invoke (var-deref "clojure.core" "key") e) (jolt-invoke (var-deref "clojure.core" "val") e))))) (jolt-seq new-parents)))) (if (jolt-contains? (jolt-get parent-map tag (jolt-hash-set)) parent) (jolt-reduce (lambda (p G__27) (let fnrec654 ((p p) (G__27 G__27)) (let* ((G__28 G__27) (t (jolt-nth G__28 0.0 jolt-nil)) (pr (jolt-nth G__28 1.0 jolt-nil))) (jolt-invoke (var-deref "clojure.core" "derive") p t pr)))) (jolt-invoke (var-deref "clojure.core" "make-hierarchy") ) (jolt-invoke (var-deref "clojure.core" "partition") 2.0 deriv-seq)) h))))))) underive))) + (def-var! "clojure.core" "underive" (letrec ((underive (case-lambda ((tag parent) (let fnrec652 ((tag tag) (parent parent)) (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "global-hierarchy") underive tag parent) jolt-nil))) ((h tag parent) (let fnrec653 ((h h) (tag tag) (parent parent)) (let* ((parent-map (jolt-get h (keyword #f "parents"))) (childs-parents (if (jolt-truthy? (jolt-get parent-map tag)) (jolt-invoke (var-deref "clojure.core" "disj") (jolt-get parent-map tag) parent) (jolt-hash-set))) (new-parents (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "not-empty") childs-parents)) (jolt-assoc parent-map tag childs-parents) (jolt-dissoc parent-map tag))) (deriv-seq (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (e) (let fnrec655 ((e e)) (jolt-cons (jolt-invoke (var-deref "clojure.core" "key") e) (jolt-invoke (var-deref "clojure.core" "interpose") (jolt-invoke (var-deref "clojure.core" "key") e) (jolt-invoke (var-deref "clojure.core" "val") e))))) (jolt-seq new-parents)))) (if (jolt-contains? (jolt-get parent-map tag (jolt-hash-set)) parent) (jolt-reduce (lambda (p G__27) (let fnrec654 ((p p) (G__27 G__27)) (let* ((G__28 G__27) (t (jolt-nth G__28 0 jolt-nil)) (pr (jolt-nth G__28 1 jolt-nil))) (jolt-invoke (var-deref "clojure.core" "derive") p t pr)))) (jolt-invoke (var-deref "clojure.core" "make-hierarchy") ) (jolt-invoke (var-deref "clojure.core" "partition") 2 deriv-seq)) h))))))) underive))) (guard (e (#t #f)) (def-var! "clojure.core" "sequential?" (letrec ((sequential? (lambda (x) (let fnrec656 ((x x)) (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "vector?") x))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.core" "seq?") x))))))) sequential?))) (guard (e (#t #f)) @@ -317,7 +317,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "force" (letrec ((force (lambda (x) (let fnrec675 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "delay?") x)) (jolt-invoke (var-deref "clojure.core" "deref") x) x))))) force))) (guard (e (#t #f)) - (def-var! "clojure.core" "pop" (letrec ((pop (lambda (coll) (let fnrec676 ((coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") coll)) jolt-nil (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") coll)) (if (jolt-zero? (jolt-count coll)) (jolt-throw "Can't pop empty vector") (jolt-invoke (var-deref "clojure.core" "subvec") coll 0.0 (jolt-dec (jolt-count coll)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-seq coll))) (jolt-throw "Can't pop empty list") (jolt-rest coll)) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "pop not supported on: " coll)) jolt-nil)))))))) pop))) + (def-var! "clojure.core" "pop" (letrec ((pop (lambda (coll) (let fnrec676 ((coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") coll)) jolt-nil (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") coll)) (if (jolt-zero? (jolt-count coll)) (jolt-throw "Can't pop empty vector") (jolt-invoke (var-deref "clojure.core" "subvec") coll 0 (jolt-dec (jolt-count coll)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-seq coll))) (jolt-throw "Can't pop empty list") (jolt-rest coll)) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "pop not supported on: " coll)) jolt-nil)))))))) pop))) (guard (e (#t #f)) (def-var! "clojure.core" "dorun" (letrec ((dorun (case-lambda ((coll) (let fnrec677 ((coll coll)) (let* ((s (jolt-seq coll))) (let loop678 ((s s)) (if (jolt-truthy? s) (loop678 (jolt-next s)) jolt-nil))))) ((n coll) (let fnrec679 ((n n) (coll coll)) (let* ((n n) (s (jolt-seq coll))) (let loop680 ((n n) (s s)) (if (jolt-truthy? (let* ((and__13__auto s)) (if (jolt-truthy? and__13__auto) (jolt-pos? n) and__13__auto))) (loop680 (jolt-dec n) (jolt-next s)) jolt-nil)))))))) dorun))) (guard (e (#t #f)) @@ -341,7 +341,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "parse-uuid" (letrec ((parse-uuid (lambda (s) (let fnrec701 ((s s)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") s)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "re-matches") (jolt-regex "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}") s)) (jolt-invoke (var-deref "clojure.core" "__make-uuid") s) jolt-nil) (jolt-throw (jolt-invoke (var-deref "clojure.core" "str") "parse-uuid requires a string, got: " s))))))) parse-uuid))) (guard (e (#t #f)) - (def-var! "clojure.core" "random-uuid" (letrec ((random-uuid (lambda () (let fnrec702 () (let* ((hx4 (lambda () (let fnrec703 () (jolt-invoke (var-deref "clojure.core" "format") "%04x" (jolt-invoke (var-deref "clojure.core" "rand-int") 65536.0))))) (hx3 (lambda () (let fnrec704 () (jolt-invoke (var-deref "clojure.core" "format") "%03x" (jolt-invoke (var-deref "clojure.core" "rand-int") 4096.0)))))) (jolt-invoke (var-deref "clojure.core" "parse-uuid") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke hx4 ) (jolt-invoke hx4 ) "-" (jolt-invoke hx4 ) "-4" (jolt-invoke hx3 ) "-" (jolt-invoke (var-deref "clojure.core" "format") "%x" (+ 8.0 (jolt-invoke (var-deref "clojure.core" "rand-int") 4.0))) (jolt-invoke hx3 ) "-" (jolt-invoke hx4 ) (jolt-invoke hx4 ) (jolt-invoke hx4 )))))))) random-uuid))) + (def-var! "clojure.core" "random-uuid" (letrec ((random-uuid (lambda () (let fnrec702 () (let* ((hx4 (lambda () (let fnrec703 () (jolt-invoke (var-deref "clojure.core" "format") "%04x" (jolt-invoke (var-deref "clojure.core" "rand-int") 65536))))) (hx3 (lambda () (let fnrec704 () (jolt-invoke (var-deref "clojure.core" "format") "%03x" (jolt-invoke (var-deref "clojure.core" "rand-int") 4096)))))) (jolt-invoke (var-deref "clojure.core" "parse-uuid") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke hx4 ) (jolt-invoke hx4 ) "-" (jolt-invoke hx4 ) "-4" (jolt-invoke hx3 ) "-" (jolt-invoke (var-deref "clojure.core" "format") "%x" (+ 8 (jolt-invoke (var-deref "clojure.core" "rand-int") 4))) (jolt-invoke hx3 ) "-" (jolt-invoke hx4 ) (jolt-invoke hx4 ) (jolt-invoke hx4 )))))))) random-uuid))) (guard (e (#t #f)) (def-var-with-meta! "clojure.core" "char-escape-strings" (let* ((_o$705 (integer->char 10)) (_o$706 "\\n") (_o$707 (integer->char 9)) (_o$708 "\\t") (_o$709 (integer->char 13)) (_o$710 "\\r") (_o$711 (integer->char 12)) (_o$712 "\\f") (_o$713 (integer->char 8)) (_o$714 "\\b") (_o$715 (integer->char 34)) (_o$716 "\\\"") (_o$717 (integer->char 92)) (_o$718 "\\\\")) (jolt-hash-map _o$705 _o$706 _o$707 _o$708 _o$709 _o$710 _o$711 _o$712 _o$713 _o$714 _o$715 _o$716 _o$717 _o$718)) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) @@ -355,7 +355,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "random-sample" (letrec ((random-sample (case-lambda ((prob) (let fnrec734 ((prob prob)) (jolt-invoke jolt-filter (lambda (_) (let fnrec735 ((_ _)) (< (jolt-invoke (var-deref "clojure.core" "rand") ) prob)))))) ((prob coll) (let fnrec736 ((prob prob) (coll coll)) (jolt-filter (lambda (_) (let fnrec737 ((_ _)) (< (jolt-invoke (var-deref "clojure.core" "rand") ) prob))) coll)))))) random-sample))) (guard (e (#t #f)) - (def-var! "clojure.core" "comparator" (letrec ((comparator (lambda (pred) (let fnrec738 ((pred pred)) (lambda (a b) (let fnrec739 ((a a) (b b)) (if (jolt-truthy? (jolt-invoke pred a b)) -1.0 (if (jolt-truthy? (jolt-invoke pred b a)) 1.0 (if (jolt-truthy? (keyword #f "else")) 0.0 jolt-nil))))))))) comparator))) + (def-var! "clojure.core" "comparator" (letrec ((comparator (lambda (pred) (let fnrec738 ((pred pred)) (lambda (a b) (let fnrec739 ((a a) (b b)) (if (jolt-truthy? (jolt-invoke pred a b)) -1 (if (jolt-truthy? (jolt-invoke pred b a)) 1 (if (jolt-truthy? (keyword #f "else")) 0 jolt-nil))))))))) comparator))) (guard (e (#t #f)) (def-var! "clojure.core" "reductions" (letrec ((reductions (case-lambda ((f coll) (let fnrec740 ((f f) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec741 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((s (jolt-seq coll))) (if (jolt-truthy? s) (jolt-invoke reductions f (jolt-first s) (jolt-rest s)) (jolt-list (jolt-invoke f )))))))))) ((f init coll) (let fnrec742 ((f f) (init init) (coll coll)) (jolt-cons init (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec743 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (jolt-invoke reductions f (jolt-invoke f init (jolt-first s)) (jolt-rest s))) jolt-nil)))))))))))) reductions))) (guard (e (#t #f)) @@ -405,7 +405,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "splitv-at" (letrec ((splitv-at (lambda (n coll) (let fnrec787 ((n n) (coll coll)) (let* ((_o$788 (jolt-invoke (var-deref "clojure.core" "vec") (jolt-take n coll))) (_o$789 (jolt-drop n coll))) (jolt-vector _o$788 _o$789)))))) splitv-at))) (guard (e (#t #f)) - (def-var! "clojure.core" "with-redefs-fn" (letrec ((with-redefs-fn (lambda (binding-map func) (let fnrec790 ((binding-map binding-map) (func func)) (let* ((vars (jolt-invoke (var-deref "clojure.core" "vec") (jolt-keys binding-map))) (saved (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "clojure.core" "var-get") vars))) (begin (begin (jolt-count (jolt-map (lambda (v) (let fnrec792 ((v v)) (begin (jolt-invoke (var-deref "clojure.core" "var-set") v (jolt-get binding-map v)) jolt-nil))) vars)) jolt-nil) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke func )) (lambda () (let* ((i 0.0)) (let loop791 ((i i)) (if (< i (jolt-count vars)) (begin (jolt-invoke (var-deref "clojure.core" "var-set") (jolt-nth vars i) (jolt-nth saved i)) (loop791 (jolt-inc i))) jolt-nil))))))))))) with-redefs-fn))) + (def-var! "clojure.core" "with-redefs-fn" (letrec ((with-redefs-fn (lambda (binding-map func) (let fnrec790 ((binding-map binding-map) (func func)) (let* ((vars (jolt-invoke (var-deref "clojure.core" "vec") (jolt-keys binding-map))) (saved (jolt-invoke (var-deref "clojure.core" "mapv") (var-deref "clojure.core" "var-get") vars))) (begin (begin (jolt-count (jolt-map (lambda (v) (let fnrec792 ((v v)) (begin (jolt-invoke (var-deref "clojure.core" "var-set") v (jolt-get binding-map v)) jolt-nil))) vars)) jolt-nil) (dynamic-wind (lambda () #f) (lambda () (jolt-invoke func )) (lambda () (let* ((i 0)) (let loop791 ((i i)) (if (< i (jolt-count vars)) (begin (jolt-invoke (var-deref "clojure.core" "var-set") (jolt-nth vars i) (jolt-nth saved i)) (loop791 (jolt-inc i))) jolt-nil))))))))))) with-redefs-fn))) (guard (e (#t #f)) (def-var! "clojure.core" "chunked-seq?" (letrec ((chunked-seq? (lambda (x) (let fnrec793 ((x x)) #f)))) chunked-seq?))) (guard (e (#t #f)) @@ -433,7 +433,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "alength" (letrec ((alength (lambda (arr) (let fnrec810 ((arr arr)) (jolt-count arr))))) alength))) (guard (e (#t #f)) - (def-var! "clojure.core" "aset" (letrec ((aset (lambda (arr . idxs+val) (let fnrec811 ((arr arr) (idxs+val (list->cseq idxs+val))) (let* ((n (jolt-count idxs+val)) (val (jolt-nth idxs+val (jolt-dec n))) (target (jolt-reduce (lambda (t k) (let fnrec812 ((t t) (k k)) (jolt-nth t k))) arr (jolt-take (- n 2.0) idxs+val)))) (begin (jolt-invoke (var-deref "jolt.host" "ref-put!") target (jolt-nth idxs+val (- n 2.0)) val) val)))))) aset))) + (def-var! "clojure.core" "aset" (letrec ((aset (lambda (arr . idxs+val) (let fnrec811 ((arr arr) (idxs+val (list->cseq idxs+val))) (let* ((n (jolt-count idxs+val)) (val (jolt-nth idxs+val (jolt-dec n))) (target (jolt-reduce (lambda (t k) (let fnrec812 ((t t) (k k)) (jolt-nth t k))) arr (jolt-take (- n 2) idxs+val)))) (begin (jolt-invoke (var-deref "jolt.host" "ref-put!") target (jolt-nth idxs+val (- n 2)) val) val)))))) aset))) (guard (e (#t #f)) (def-var! "clojure.core" "complement" (letrec ((complement (lambda (f) (let fnrec813 ((f f)) (lambda args (let fnrec814 ((args (list->cseq args))) (jolt-not (jolt-apply f args)))))))) complement))) (guard (e (#t #f)) @@ -483,9 +483,9 @@ (guard (e (#t #f)) (def-var! "clojure.core" "empty" (letrec ((empty (lambda (coll) (let fnrec866 ((coll coll)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") coll)) jolt-nil (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "sorted?") coll)) (jolt-invoke (jolt-get (jolt-invoke (var-deref "jolt.host" "ref-get") coll (keyword #f "ops")) (keyword #f "empty")) coll) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") coll)) (jolt-hash-map) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "set?") coll)) (jolt-hash-set) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") coll)) (jolt-vector) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "coll?") coll)) (jolt-list ) (if (jolt-truthy? (keyword #f "else")) jolt-nil jolt-nil))))))))))) empty))) (guard (e (#t #f)) - (def-var! "clojure.core" "assoc-in" (letrec ((assoc-in (lambda (m G__29 v) (let fnrec867 ((m m) (G__29 G__29) (v v)) (let* ((G__30 G__29) (k (jolt-nth G__30 0.0 jolt-nil)) (ks (jolt-invoke (var-deref "clojure.core" "nthnext") G__30 1.0))) (if (jolt-truthy? ks) (jolt-assoc m k (jolt-invoke assoc-in (jolt-get m k) ks v)) (jolt-assoc m k v))))))) assoc-in))) + (def-var! "clojure.core" "assoc-in" (letrec ((assoc-in (lambda (m G__29 v) (let fnrec867 ((m m) (G__29 G__29) (v v)) (let* ((G__30 G__29) (k (jolt-nth G__30 0 jolt-nil)) (ks (jolt-invoke (var-deref "clojure.core" "nthnext") G__30 1))) (if (jolt-truthy? ks) (jolt-assoc m k (jolt-invoke assoc-in (jolt-get m k) ks v)) (jolt-assoc m k v))))))) assoc-in))) (guard (e (#t #f)) - (def-var! "clojure.core" "update-in" (letrec ((update-in (lambda (m ks f . args) (let fnrec868 ((m m) (ks ks) (f f) (args (list->cseq args))) (let* ((up (letrec ((up (lambda (m ks f args) (let fnrec869 ((m m) (ks ks) (f f) (args args)) (let* ((G__31 ks) (k (jolt-nth G__31 0.0 jolt-nil)) (ks (jolt-invoke (var-deref "clojure.core" "nthnext") G__31 1.0))) (if (jolt-truthy? ks) (jolt-assoc m k (jolt-invoke up (jolt-get m k) ks f args)) (jolt-assoc m k (jolt-apply f (jolt-get m k) args)))))))) up))) (jolt-invoke up m ks f args)))))) update-in))) + (def-var! "clojure.core" "update-in" (letrec ((update-in (lambda (m ks f . args) (let fnrec868 ((m m) (ks ks) (f f) (args (list->cseq args))) (let* ((up (letrec ((up (lambda (m ks f args) (let fnrec869 ((m m) (ks ks) (f f) (args args)) (let* ((G__31 ks) (k (jolt-nth G__31 0 jolt-nil)) (ks (jolt-invoke (var-deref "clojure.core" "nthnext") G__31 1))) (if (jolt-truthy? ks) (jolt-assoc m k (jolt-invoke up (jolt-get m k) ks f args)) (jolt-assoc m k (jolt-apply f (jolt-get m k) args)))))))) up))) (jolt-invoke up m ks f args)))))) update-in))) (guard (e (#t #f)) (def-var! "clojure.core" "find-keyword" (letrec ((find-keyword (case-lambda ((nm) (let fnrec870 ((nm nm)) (jolt-invoke (var-deref "clojure.core" "keyword") nm))) ((ns nm) (let fnrec871 ((ns ns) (nm nm)) (jolt-invoke (var-deref "clojure.core" "keyword") ns nm)))))) find-keyword))) (guard (e (#t #f)) @@ -513,9 +513,9 @@ (guard (e (#t #f)) (def-var! "clojure.core" "unchecked-negate" (letrec ((unchecked-negate (lambda (x) (let fnrec886 ((x x)) (- x))))) unchecked-negate))) (guard (e (#t #f)) - (def-var! "clojure.core" "unchecked-inc" (letrec ((unchecked-inc (lambda (x) (let fnrec887 ((x x)) (+ x 1.0))))) unchecked-inc))) + (def-var! "clojure.core" "unchecked-inc" (letrec ((unchecked-inc (lambda (x) (let fnrec887 ((x x)) (+ x 1))))) unchecked-inc))) (guard (e (#t #f)) - (def-var! "clojure.core" "unchecked-dec" (letrec ((unchecked-dec (lambda (x) (let fnrec888 ((x x)) (- x 1.0))))) unchecked-dec))) + (def-var! "clojure.core" "unchecked-dec" (letrec ((unchecked-dec (lambda (x) (let fnrec888 ((x x)) (- x 1))))) unchecked-dec))) (guard (e (#t #f)) (def-var! "clojure.core" "unchecked-add-int" (var-deref "clojure.core" "unchecked-add"))) (guard (e (#t #f)) @@ -557,11 +557,11 @@ (guard (e (#t #f)) (def-var! "clojure.core" "to-array-2d" (letrec ((to-array-2d (lambda (coll) (let fnrec909 ((coll coll)) (jolt-invoke (var-deref "clojure.core" "to-array") (jolt-map (var-deref "clojure.core" "to-array") coll)))))) to-array-2d))) (guard (e (#t #f)) - (def-var! "clojure.core" "unchecked-byte" (letrec ((unchecked-byte (lambda (x) (let fnrec910 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 255.0))))) unchecked-byte))) + (def-var! "clojure.core" "unchecked-byte" (letrec ((unchecked-byte (lambda (x) (let fnrec910 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 255))))) unchecked-byte))) (guard (e (#t #f)) - (def-var! "clojure.core" "unchecked-short" (letrec ((unchecked-short (lambda (x) (let fnrec911 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 65535.0))))) unchecked-short))) + (def-var! "clojure.core" "unchecked-short" (letrec ((unchecked-short (lambda (x) (let fnrec911 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 65535))))) unchecked-short))) (guard (e (#t #f)) - (def-var! "clojure.core" "unchecked-char" (letrec ((unchecked-char (lambda (x) (let fnrec912 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 65535.0))))) unchecked-char))) + (def-var! "clojure.core" "unchecked-char" (letrec ((unchecked-char (lambda (x) (let fnrec912 ((x x)) (jolt-invoke (var-deref "clojure.core" "bit-and") (jolt-invoke (var-deref "clojure.core" "int") x) 65535))))) unchecked-char))) (guard (e (#t #f)) (def-var! "clojure.core" "unchecked-float" (letrec ((unchecked-float (lambda (x) (let fnrec913 ((x x)) (jolt-invoke (var-deref "clojure.core" "double") x))))) unchecked-float))) (guard (e (#t #f)) @@ -605,21 +605,21 @@ (guard (e (#t #f)) (def-var! "clojure.core" "sfield" (letrec ((sfield (lambda (sc k) (let fnrec243 ((sc sc) (k k)) (jolt-invoke (var-deref "jolt.host" "ref-get") sc k))))) sfield))) (guard (e (#t #f)) - (def-var! "clojure.core" "fn->cmp" (letrec ((fn->cmp (lambda (f) (let fnrec244 ((f f)) (lambda (a b) (let fnrec245 ((a a) (b b)) (let* ((r (jolt-invoke f a b))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") r)) r (if (jolt-truthy? r) -1.0 (if (jolt-truthy? (jolt-invoke f b a)) 1.0 0.0)))))))))) fn->cmp))) + (def-var! "clojure.core" "fn->cmp" (letrec ((fn->cmp (lambda (f) (let fnrec244 ((f f)) (lambda (a b) (let fnrec245 ((a a) (b b)) (let* ((r (jolt-invoke f a b))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "number?") r)) r (if (jolt-truthy? r) -1 (if (jolt-truthy? (jolt-invoke f b a)) 1 0)))))))))) fn->cmp))) (guard (e (#t #f)) (def-var! "clojure.core" "the-cmp" (letrec ((the-cmp (lambda (sc) (let fnrec246 ((sc sc)) (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "sfield") sc (keyword #f "cmp")))) (if (jolt-truthy? or__14__auto) or__14__auto (var-deref "clojure.core" "compare"))))))) the-cmp))) (guard (e (#t #f)) - (def-var! "clojure.core" "nd-key" (letrec ((nd-key (lambda (n) (let fnrec247 ((n n)) (jolt-nth n 1.0))))) nd-key))) + (def-var! "clojure.core" "nd-key" (letrec ((nd-key (lambda (n) (let fnrec247 ((n n)) (jolt-nth n 1))))) nd-key))) (guard (e (#t #f)) - (def-var! "clojure.core" "nd-val" (letrec ((nd-val (lambda (n) (let fnrec248 ((n n)) (jolt-nth n 2.0))))) nd-val))) + (def-var! "clojure.core" "nd-val" (letrec ((nd-val (lambda (n) (let fnrec248 ((n n)) (jolt-nth n 2))))) nd-val))) (guard (e (#t #f)) - (def-var! "clojure.core" "nd-left" (letrec ((nd-left (lambda (n) (let fnrec249 ((n n)) (jolt-nth n 3.0))))) nd-left))) + (def-var! "clojure.core" "nd-left" (letrec ((nd-left (lambda (n) (let fnrec249 ((n n)) (jolt-nth n 3))))) nd-left))) (guard (e (#t #f)) - (def-var! "clojure.core" "nd-right" (letrec ((nd-right (lambda (n) (let fnrec250 ((n n)) (jolt-nth n 4.0))))) nd-right))) + (def-var! "clojure.core" "nd-right" (letrec ((nd-right (lambda (n) (let fnrec250 ((n n)) (jolt-nth n 4))))) nd-right))) (guard (e (#t #f)) - (def-var! "clojure.core" "red?" (letrec ((red? (lambda (n) (let fnrec251 ((n n)) (let* ((and__13__auto n)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "identical?") (keyword #f "red") (jolt-nth n 0.0)) and__13__auto)))))) red?))) + (def-var! "clojure.core" "red?" (letrec ((red? (lambda (n) (let fnrec251 ((n n)) (let* ((and__13__auto n)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "identical?") (keyword #f "red") (jolt-nth n 0)) and__13__auto)))))) red?))) (guard (e (#t #f)) - (def-var! "clojure.core" "black?" (letrec ((black? (lambda (n) (let fnrec252 ((n n)) (let* ((and__13__auto n)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "identical?") (keyword #f "black") (jolt-nth n 0.0)) and__13__auto)))))) black?))) + (def-var! "clojure.core" "black?" (letrec ((black? (lambda (n) (let fnrec252 ((n n)) (let* ((and__13__auto n)) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "identical?") (keyword #f "black") (jolt-nth n 0)) and__13__auto)))))) black?))) (guard (e (#t #f)) (def-var! "clojure.core" "mk-red" (letrec ((mk-red (lambda (k v l r) (let fnrec253 ((k k) (v v) (l l) (r r)) (let* ((_o$254 (keyword #f "red")) (_o$255 k) (_o$256 v) (_o$257 l) (_o$258 r)) (jolt-vector _o$254 _o$255 _o$256 _o$257 _o$258)))))) mk-red))) (guard (e (#t #f)) @@ -669,13 +669,13 @@ (guard (e (#t #f)) (def-var! "clojure.core" "sm-assoc-1" (letrec ((sm-assoc-1 (lambda (sm k v) (let fnrec299 ((sm sm) (k k) (v v)) (let* ((cmp (jolt-invoke (var-deref "clojure.core" "the-cmp") sm)) (tree (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "tree"))) (node (jolt-invoke (var-deref "clojure.core" "tree-lookup") tree cmp k))) (if (jolt-truthy? (let* ((and__13__auto node)) (if (jolt-truthy? and__13__auto) (jolt= v (jolt-invoke (var-deref "clojure.core" "nd-val") node)) and__13__auto))) sm (if (jolt-truthy? node) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") (jolt-invoke (var-deref "clojure.core" "tree-replace") cmp tree k v) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cnt")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "ops"))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") (jolt-invoke (var-deref "clojure.core" "blacken") (jolt-invoke (var-deref "clojure.core" "tree-ins") cmp tree k v)) (jolt-inc (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cnt"))) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "ops"))) jolt-nil)))))))) sm-assoc-1))) (guard (e (#t #f)) - (def-var! "clojure.core" "sm-assoc-many" (letrec ((sm-assoc-many (lambda (sm kvs) (let fnrec300 ((sm sm) (kvs kvs)) (let* ((n (jolt-count kvs))) (begin (if (jolt-odd? n) (jolt-throw (jolt-ex-info "sorted-map assoc expects an even number of key/values" (let* ((_o$302 (keyword #f "count")) (_o$303 n)) (jolt-hash-map _o$302 _o$303)))) jolt-nil) (let* ((m sm) (i 0.0)) (let loop301 ((m m) (i i)) (if (< i n) (loop301 (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") m (jolt-nth kvs i) (jolt-nth kvs (jolt-inc i))) (+ i 2.0)) m))))))))) sm-assoc-many))) + (def-var! "clojure.core" "sm-assoc-many" (letrec ((sm-assoc-many (lambda (sm kvs) (let fnrec300 ((sm sm) (kvs kvs)) (let* ((n (jolt-count kvs))) (begin (if (jolt-odd? n) (jolt-throw (jolt-ex-info "sorted-map assoc expects an even number of key/values" (let* ((_o$302 (keyword #f "count")) (_o$303 n)) (jolt-hash-map _o$302 _o$303)))) jolt-nil) (let* ((m sm) (i 0)) (let loop301 ((m m) (i i)) (if (< i n) (loop301 (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") m (jolt-nth kvs i) (jolt-nth kvs (jolt-inc i))) (+ i 2)) m))))))))) sm-assoc-many))) (guard (e (#t #f)) (def-var! "clojure.core" "sm-dissoc-1" (letrec ((sm-dissoc-1 (lambda (sm k) (let fnrec304 ((sm sm) (k k)) (let* ((cmp (jolt-invoke (var-deref "clojure.core" "the-cmp") sm)) (tree (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "tree")))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "clojure.core" "tree-lookup") tree cmp k))) sm (let* ((t (jolt-invoke (var-deref "clojure.core" "tree-del") cmp tree k))) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") (if (jolt-truthy? t) (jolt-invoke (var-deref "clojure.core" "blacken") t) jolt-nil) (jolt-dec (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cnt"))) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "ops")))))))))) sm-dissoc-1))) (guard (e (#t #f)) (def-var! "clojure.core" "sm-dissoc-many" (letrec ((sm-dissoc-many (lambda (sm ks) (let fnrec305 ((sm sm) (ks ks)) (jolt-reduce (var-deref "clojure.core" "sm-dissoc-1") sm ks))))) sm-dissoc-many))) (guard (e (#t #f)) - (def-var! "clojure.core" "sm-conj-1" (letrec ((sm-conj-1 (lambda (sm x) (let fnrec306 ((sm sm) (x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") x)) sm (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-reduce (lambda (m e) (let fnrec307 ((m m) (e e)) (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") m (jolt-first e) (jolt-invoke (var-deref "clojure.core" "second") e)))) sm (jolt-seq x)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") x))) (if (jolt-truthy? and__13__auto) (jolt= 2.0 (jolt-count x)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") sm (jolt-nth x 0.0) (jolt-nth x 1.0)) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-ex-info "conj on a sorted-map requires a [key value] pair or a map" (jolt-hash-map))) jolt-nil)))))))) sm-conj-1))) + (def-var! "clojure.core" "sm-conj-1" (letrec ((sm-conj-1 (lambda (sm x) (let fnrec306 ((sm sm) (x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") x)) sm (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-reduce (lambda (m e) (let fnrec307 ((m m) (e e)) (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") m (jolt-first e) (jolt-invoke (var-deref "clojure.core" "second") e)))) sm (jolt-seq x)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "vector?") x))) (if (jolt-truthy? and__13__auto) (jolt= 2 (jolt-count x)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-1") sm (jolt-nth x 0) (jolt-nth x 1)) (if (jolt-truthy? (keyword #f "else")) (jolt-throw (jolt-ex-info "conj on a sorted-map requires a [key value] pair or a map" (jolt-hash-map))) jolt-nil)))))))) sm-conj-1))) (guard (e (#t #f)) (def-var! "clojure.core" "sm-conj-many" (letrec ((sm-conj-many (lambda (sm xs) (let fnrec308 ((sm sm) (xs xs)) (jolt-reduce (var-deref "clojure.core" "sm-conj-1") sm xs))))) sm-conj-many))) (guard (e (#t #f)) @@ -689,17 +689,17 @@ (guard (e (#t #f)) (def-var! "clojure.core" "ss-disj-many" (letrec ((ss-disj-many (lambda (ss xs) (let fnrec313 ((ss ss) (xs xs)) (jolt-reduce (var-deref "clojure.core" "ss-disj-1") ss xs))))) ss-disj-many))) (guard (e (#t #f)) - (def-var-with-meta! "clojure.core" "sm-ops" (let* ((_o$321 (keyword #f "count")) (_o$322 (lambda (sm) (let fnrec314 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cnt"))))) (_o$323 (keyword #f "entries")) (_o$324 (lambda (sm) (let fnrec315 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry"))))) (_o$325 (keyword #f "seq")) (_o$326 (lambda (sm) (let fnrec316 ((sm sm)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))) (_o$327 (keyword #f "rseq")) (_o$328 (lambda (sm) (let fnrec317 ((sm sm)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "vec") (jolt-reverse (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))))) (_o$329 (keyword #f "first")) (_o$330 (lambda (sm) (let fnrec318 ((sm sm)) (jolt-first (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))) (_o$331 (keyword #f "get")) (_o$332 (var-deref "clojure.core" "sm-get")) (_o$333 (keyword #f "contains")) (_o$334 (lambda (sm k) (let fnrec319 ((sm sm) (k k)) (jolt-not (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "clojure.core" "tree-lookup") (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "tree")) (jolt-invoke (var-deref "clojure.core" "the-cmp") sm) k)))))) (_o$335 (keyword #f "assoc")) (_o$336 (var-deref "clojure.core" "sm-assoc-many")) (_o$337 (keyword #f "dissoc")) (_o$338 (var-deref "clojure.core" "sm-dissoc-many")) (_o$339 (keyword #f "conj")) (_o$340 (var-deref "clojure.core" "sm-conj-many")) (_o$341 (keyword #f "empty")) (_o$342 (lambda (sm) (let fnrec320 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0.0 (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "ops"))))))) (jolt-hash-map _o$321 _o$322 _o$323 _o$324 _o$325 _o$326 _o$327 _o$328 _o$329 _o$330 _o$331 _o$332 _o$333 _o$334 _o$335 _o$336 _o$337 _o$338 _o$339 _o$340 _o$341 _o$342)) (jolt-hash-map (keyword #f "private") #t))) + (def-var-with-meta! "clojure.core" "sm-ops" (let* ((_o$321 (keyword #f "count")) (_o$322 (lambda (sm) (let fnrec314 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cnt"))))) (_o$323 (keyword #f "entries")) (_o$324 (lambda (sm) (let fnrec315 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry"))))) (_o$325 (keyword #f "seq")) (_o$326 (lambda (sm) (let fnrec316 ((sm sm)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))) (_o$327 (keyword #f "rseq")) (_o$328 (lambda (sm) (let fnrec317 ((sm sm)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "vec") (jolt-reverse (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))))) (_o$329 (keyword #f "first")) (_o$330 (lambda (sm) (let fnrec318 ((sm sm)) (jolt-first (jolt-invoke (var-deref "clojure.core" "sc-entries") sm (var-deref "clojure.core" "map-entry")))))) (_o$331 (keyword #f "get")) (_o$332 (var-deref "clojure.core" "sm-get")) (_o$333 (keyword #f "contains")) (_o$334 (lambda (sm k) (let fnrec319 ((sm sm) (k k)) (jolt-not (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "clojure.core" "tree-lookup") (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "tree")) (jolt-invoke (var-deref "clojure.core" "the-cmp") sm) k)))))) (_o$335 (keyword #f "assoc")) (_o$336 (var-deref "clojure.core" "sm-assoc-many")) (_o$337 (keyword #f "dissoc")) (_o$338 (var-deref "clojure.core" "sm-dissoc-many")) (_o$339 (keyword #f "conj")) (_o$340 (var-deref "clojure.core" "sm-conj-many")) (_o$341 (keyword #f "empty")) (_o$342 (lambda (sm) (let fnrec320 ((sm sm)) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0 (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") sm (keyword #f "ops"))))))) (jolt-hash-map _o$321 _o$322 _o$323 _o$324 _o$325 _o$326 _o$327 _o$328 _o$329 _o$330 _o$331 _o$332 _o$333 _o$334 _o$335 _o$336 _o$337 _o$338 _o$339 _o$340 _o$341 _o$342)) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var-with-meta! "clojure.core" "ss-ops" (let* ((_o$350 (keyword #f "count")) (_o$351 (lambda (ss) (let fnrec343 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "cnt"))))) (_o$352 (keyword #f "entries")) (_o$353 (lambda (ss) (let fnrec344 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key"))))) (_o$354 (keyword #f "seq")) (_o$355 (lambda (ss) (let fnrec345 ((ss ss)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))) (_o$356 (keyword #f "rseq")) (_o$357 (lambda (ss) (let fnrec346 ((ss ss)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "vec") (jolt-reverse (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))))) (_o$358 (keyword #f "first")) (_o$359 (lambda (ss) (let fnrec347 ((ss ss)) (jolt-first (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))) (_o$360 (keyword #f "get")) (_o$361 (var-deref "clojure.core" "ss-get")) (_o$362 (keyword #f "contains")) (_o$363 (lambda (ss x) (let fnrec348 ((ss ss) (x x)) (jolt-not (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "clojure.core" "tree-lookup") (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "tree")) (jolt-invoke (var-deref "clojure.core" "the-cmp") ss) x)))))) (_o$364 (keyword #f "conj")) (_o$365 (var-deref "clojure.core" "ss-conj-many")) (_o$366 (keyword #f "disj")) (_o$367 (var-deref "clojure.core" "ss-disj-many")) (_o$368 (keyword #f "empty")) (_o$369 (lambda (ss) (let fnrec349 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0.0 (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "ops"))))))) (jolt-hash-map _o$350 _o$351 _o$352 _o$353 _o$354 _o$355 _o$356 _o$357 _o$358 _o$359 _o$360 _o$361 _o$362 _o$363 _o$364 _o$365 _o$366 _o$367 _o$368 _o$369)) (jolt-hash-map (keyword #f "private") #t))) + (def-var-with-meta! "clojure.core" "ss-ops" (let* ((_o$350 (keyword #f "count")) (_o$351 (lambda (ss) (let fnrec343 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "cnt"))))) (_o$352 (keyword #f "entries")) (_o$353 (lambda (ss) (let fnrec344 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key"))))) (_o$354 (keyword #f "seq")) (_o$355 (lambda (ss) (let fnrec345 ((ss ss)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))) (_o$356 (keyword #f "rseq")) (_o$357 (lambda (ss) (let fnrec346 ((ss ss)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "vec") (jolt-reverse (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))))) (_o$358 (keyword #f "first")) (_o$359 (lambda (ss) (let fnrec347 ((ss ss)) (jolt-first (jolt-invoke (var-deref "clojure.core" "sc-entries") ss (var-deref "clojure.core" "nd-key")))))) (_o$360 (keyword #f "get")) (_o$361 (var-deref "clojure.core" "ss-get")) (_o$362 (keyword #f "contains")) (_o$363 (lambda (ss x) (let fnrec348 ((ss ss) (x x)) (jolt-not (jolt-invoke (var-deref "clojure.core" "nil?") (jolt-invoke (var-deref "clojure.core" "tree-lookup") (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "tree")) (jolt-invoke (var-deref "clojure.core" "the-cmp") ss) x)))))) (_o$364 (keyword #f "conj")) (_o$365 (var-deref "clojure.core" "ss-conj-many")) (_o$366 (keyword #f "disj")) (_o$367 (var-deref "clojure.core" "ss-disj-many")) (_o$368 (keyword #f "empty")) (_o$369 (lambda (ss) (let fnrec349 ((ss ss)) (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0 (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "cmp")) (jolt-invoke (var-deref "clojure.core" "sfield") ss (keyword #f "ops"))))))) (jolt-hash-map _o$350 _o$351 _o$352 _o$353 _o$354 _o$355 _o$356 _o$357 _o$358 _o$359 _o$360 _o$361 _o$362 _o$363 _o$364 _o$365 _o$366 _o$367 _o$368 _o$369)) (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var! "clojure.core" "sorted-map" (letrec ((sorted-map (lambda kvs (let fnrec370 ((kvs (list->cseq kvs))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0.0 jolt-nil (var-deref "clojure.core" "sm-ops")) (jolt-invoke (var-deref "clojure.core" "vec") kvs)))))) sorted-map))) + (def-var! "clojure.core" "sorted-map" (letrec ((sorted-map (lambda kvs (let fnrec370 ((kvs (list->cseq kvs))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0 jolt-nil (var-deref "clojure.core" "sm-ops")) (jolt-invoke (var-deref "clojure.core" "vec") kvs)))))) sorted-map))) (guard (e (#t #f)) - (def-var! "clojure.core" "sorted-map-by" (letrec ((sorted-map-by (lambda (comparator . kvs) (let fnrec371 ((comparator comparator) (kvs (list->cseq kvs))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0.0 (jolt-invoke (var-deref "clojure.core" "fn->cmp") comparator) (var-deref "clojure.core" "sm-ops")) (jolt-invoke (var-deref "clojure.core" "vec") kvs)))))) sorted-map-by))) + (def-var! "clojure.core" "sorted-map-by" (letrec ((sorted-map-by (lambda (comparator . kvs) (let fnrec371 ((comparator comparator) (kvs (list->cseq kvs))) (jolt-invoke (var-deref "clojure.core" "sm-assoc-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-map") jolt-nil 0 (jolt-invoke (var-deref "clojure.core" "fn->cmp") comparator) (var-deref "clojure.core" "sm-ops")) (jolt-invoke (var-deref "clojure.core" "vec") kvs)))))) sorted-map-by))) (guard (e (#t #f)) - (def-var! "clojure.core" "sorted-set" (letrec ((sorted-set (lambda xs (let fnrec372 ((xs (list->cseq xs))) (jolt-invoke (var-deref "clojure.core" "ss-conj-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0.0 jolt-nil (var-deref "clojure.core" "ss-ops")) (jolt-invoke (var-deref "clojure.core" "vec") xs)))))) sorted-set))) + (def-var! "clojure.core" "sorted-set" (letrec ((sorted-set (lambda xs (let fnrec372 ((xs (list->cseq xs))) (jolt-invoke (var-deref "clojure.core" "ss-conj-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0 jolt-nil (var-deref "clojure.core" "ss-ops")) (jolt-invoke (var-deref "clojure.core" "vec") xs)))))) sorted-set))) (guard (e (#t #f)) - (def-var! "clojure.core" "sorted-set-by" (letrec ((sorted-set-by (lambda (comparator . xs) (let fnrec373 ((comparator comparator) (xs (list->cseq xs))) (jolt-invoke (var-deref "clojure.core" "ss-conj-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0.0 (jolt-invoke (var-deref "clojure.core" "fn->cmp") comparator) (var-deref "clojure.core" "ss-ops")) (jolt-invoke (var-deref "clojure.core" "vec") xs)))))) sorted-set-by))) + (def-var! "clojure.core" "sorted-set-by" (letrec ((sorted-set-by (lambda (comparator . xs) (let fnrec373 ((comparator comparator) (xs (list->cseq xs))) (jolt-invoke (var-deref "clojure.core" "ss-conj-many") (jolt-invoke (var-deref "clojure.core" "make-sorted") (keyword "jolt" "sorted-set") jolt-nil 0 (jolt-invoke (var-deref "clojure.core" "fn->cmp") comparator) (var-deref "clojure.core" "ss-ops")) (jolt-invoke (var-deref "clojure.core" "vec") xs)))))) sorted-set-by))) (guard (e (#t #f)) (def-var! "clojure.core" "sorted-map?" (letrec ((sorted-map? (lambda (x) (let fnrec374 ((x x)) (jolt= (keyword "jolt" "sorted-map") (jolt-invoke (var-deref "clojure.core" "sfield") x (keyword "jolt" "type"))))))) sorted-map?))) (guard (e (#t #f)) @@ -711,7 +711,7 @@ (guard (e (#t #f)) (def-var! "clojure.core" "sc-proj" (letrec ((sc-proj (lambda (sc) (let fnrec378 ((sc sc)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "sorted-map?") sc)) (var-deref "clojure.core" "map-entry") (var-deref "clojure.core" "nd-key")))))) sc-proj))) (guard (e (#t #f)) - (def-var! "clojure.core" "sub-filter" (letrec ((sub-filter (lambda (sc tests) (let fnrec379 ((sc sc) (tests tests)) (let* ((cmp (jolt-invoke (var-deref "clojure.core" "the-cmp") sc)) (keyf (jolt-invoke (var-deref "clojure.core" "sc-keyf") sc))) (jolt-invoke (var-deref "clojure.core" "filterv") (lambda (e) (let fnrec380 ((e e)) (jolt-invoke (var-deref "clojure.core" "every?") (lambda (G__15) (let fnrec381 ((G__15 G__15)) (let* ((G__16 G__15) (test (jolt-nth G__16 0.0 jolt-nil)) (k (jolt-nth G__16 1.0 jolt-nil))) (jolt-invoke test (jolt-invoke cmp (jolt-invoke keyf e) k) 0.0)))) tests))) (jolt-invoke (var-deref "clojure.core" "sc-entries") sc (jolt-invoke (var-deref "clojure.core" "sc-proj") sc)))))))) sub-filter))) + (def-var! "clojure.core" "sub-filter" (letrec ((sub-filter (lambda (sc tests) (let fnrec379 ((sc sc) (tests tests)) (let* ((cmp (jolt-invoke (var-deref "clojure.core" "the-cmp") sc)) (keyf (jolt-invoke (var-deref "clojure.core" "sc-keyf") sc))) (jolt-invoke (var-deref "clojure.core" "filterv") (lambda (e) (let fnrec380 ((e e)) (jolt-invoke (var-deref "clojure.core" "every?") (lambda (G__15) (let fnrec381 ((G__15 G__15)) (let* ((G__16 G__15) (test (jolt-nth G__16 0 jolt-nil)) (k (jolt-nth G__16 1 jolt-nil))) (jolt-invoke test (jolt-invoke cmp (jolt-invoke keyf e) k) 0)))) tests))) (jolt-invoke (var-deref "clojure.core" "sc-entries") sc (jolt-invoke (var-deref "clojure.core" "sc-proj") sc)))))))) sub-filter))) (guard (e (#t #f)) (def-var! "clojure.core" "subseq" (letrec ((subseq (case-lambda ((sc test k) (let fnrec382 ((sc sc) (test test) (k k)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sub-filter") sc (jolt-vector (let* ((_o$383 test) (_o$384 k)) (jolt-vector _o$383 _o$384))))))) ((sc start-test start-k end-test end-k) (let fnrec385 ((sc sc) (start-test start-test) (start-k start-k) (end-test end-test) (end-k end-k)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "sub-filter") sc (let* ((_o$390 (let* ((_o$386 start-test) (_o$387 start-k)) (jolt-vector _o$386 _o$387))) (_o$391 (let* ((_o$388 end-test) (_o$389 end-k)) (jolt-vector _o$388 _o$389)))) (jolt-vector _o$390 _o$391))))))))) subseq))) (guard (e (#t #f)) @@ -770,19 +770,19 @@ (mark-macro! "clojure.core" "time")) (guard (e (#t #f)) (def-var! "clojure.core" "with-redefs" - (lambda (bindings . body) (let fnrec415 ((bindings bindings) (body (list->cseq body))) (let* ((pairs (jolt-reduce (lambda (acc p) (let fnrec416 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first p)))) (jolt-invoke (var-deref "clojure.core" "second") p)))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2.0 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "with-redefs-fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "hash-map")) pairs)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") )) body))))))) + (lambda (bindings . body) (let fnrec415 ((bindings bindings) (body (list->cseq body))) (let* ((pairs (jolt-reduce (lambda (acc p) (let fnrec416 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first p)))) (jolt-invoke (var-deref "clojure.core" "second") p)))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "with-redefs-fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "hash-map")) pairs)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") )) body))))))) (mark-macro! "clojure.core" "with-redefs")) (guard (e (#t #f)) (def-var! "clojure.core" "with-local-vars" - (lambda (bindings . body) (let fnrec417 ((bindings bindings) (body (list->cseq body))) (let* ((binds (jolt-reduce (lambda (acc p) (let fnrec418 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-first p)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "__local-var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") p)))))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2.0 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) body))))) + (lambda (bindings . body) (let fnrec417 ((bindings bindings) (body (list->cseq body))) (let* ((binds (jolt-reduce (lambda (acc p) (let fnrec418 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-first p)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "__local-var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") p)))))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) body))))) (mark-macro! "clojure.core" "with-local-vars")) (guard (e (#t #f)) (def-var! "clojure.core" "with-open" - (lambda (bindings . body) (let fnrec419 ((bindings bindings) (body (list->cseq body))) (if (jolt-zero? (jolt-count bindings)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first bindings)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") bindings)))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "try")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "with-open")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "vec") (jolt-drop 2.0 bindings))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "finally")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "__close")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first bindings))))))))))))) + (lambda (bindings . body) (let fnrec419 ((bindings bindings) (body (list->cseq body))) (if (jolt-zero? (jolt-count bindings)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first bindings)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") bindings)))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "try")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "with-open")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "vec") (jolt-drop 2 bindings))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "finally")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "__close")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first bindings))))))))))))) (mark-macro! "clojure.core" "with-open")) (guard (e (#t #f)) (def-var! "clojure.core" "with-precision" - (lambda (precision . exprs) (let fnrec420 ((precision precision) (exprs (list->cseq exprs))) (let* ((body (if (jolt= (keyword #f "rounding") (jolt-first exprs)) (jolt-drop 2.0 exprs) exprs))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body))))) + (lambda (precision . exprs) (let fnrec420 ((precision precision) (exprs (list->cseq exprs))) (let* ((body (if (jolt= (keyword #f "rounding") (jolt-first exprs)) (jolt-drop 2 exprs) exprs))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body))))) (mark-macro! "clojure.core" "with-precision")) (guard (e (#t #f)) (def-var! "clojure.core" "with-bindings" @@ -798,19 +798,19 @@ (mark-macro! "clojure.core" "defonce")) (guard (e (#t #f)) (def-var! "clojure.core" "if-not" - (lambda (test then . G__17) (let fnrec424 ((test test) (then then) (G__17 (list->cseq G__17))) (let* ((G__18 G__17) (else (jolt-nth G__18 0.0 jolt-nil))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "not")) (jolt-invoke (var-deref "clojure.core" "__sq1") test))) (jolt-invoke (var-deref "clojure.core" "__sq1") then) (jolt-invoke (var-deref "clojure.core" "__sq1") else)))))) + (lambda (test then . G__17) (let fnrec424 ((test test) (then then) (G__17 (list->cseq G__17))) (let* ((G__18 G__17) (else (jolt-nth G__18 0 jolt-nil))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "not")) (jolt-invoke (var-deref "clojure.core" "__sq1") test))) (jolt-invoke (var-deref "clojure.core" "__sq1") then) (jolt-invoke (var-deref "clojure.core" "__sq1") else)))))) (mark-macro! "clojure.core" "if-not")) (guard (e (#t #f)) (def-var! "clojure.core" "if-let" - (lambda (bindings then . G__19) (let fnrec425 ((bindings bindings) (then then) (G__19 (list->cseq G__19))) (let* ((G__20 G__19) (else (jolt-nth G__20 0.0 jolt-nil))) (let* ((form (jolt-invoke bindings 0.0)) (tst (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") then))) (jolt-invoke (var-deref "clojure.core" "__sq1") else))))))))) + (lambda (bindings then . G__19) (let fnrec425 ((bindings bindings) (then then) (G__19 (list->cseq G__19))) (let* ((G__20 G__19) (else (jolt-nth G__20 0 jolt-nil))) (let* ((form (jolt-invoke bindings 0)) (tst (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__4__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") then))) (jolt-invoke (var-deref "clojure.core" "__sq1") else))))))))) (mark-macro! "clojure.core" "if-let")) (guard (e (#t #f)) (def-var! "clojure.core" "if-some" - (lambda (bindings then . G__21) (let fnrec426 ((bindings bindings) (then then) (G__21 (list->cseq G__21))) (let* ((G__22 G__21) (else (jolt-nth G__22 0.0 jolt-nil))) (let* ((form (jolt-invoke bindings 0.0)) (tst (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "some?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") then))) (jolt-invoke (var-deref "clojure.core" "__sq1") else))))))))) + (lambda (bindings then . G__21) (let fnrec426 ((bindings bindings) (then then) (G__21 (list->cseq G__21))) (let* ((G__22 G__21) (else (jolt-nth G__22 0 jolt-nil))) (let* ((form (jolt-invoke bindings 0)) (tst (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "some?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__5__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") then))) (jolt-invoke (var-deref "clojure.core" "__sq1") else))))))))) (mark-macro! "clojure.core" "if-some")) (guard (e (#t #f)) (def-var! "clojure.core" "when-some" - (lambda (bindings . body) (let fnrec427 ((bindings bindings) (body (list->cseq body))) (let* ((form (jolt-invoke bindings 0.0)) (tst (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "some?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)))))))) + (lambda (bindings . body) (let fnrec427 ((bindings bindings) (body (list->cseq body))) (let* ((form (jolt-invoke bindings 0)) (tst (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") tst))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "some?")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") form) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "temp__6__auto")))) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") jolt-nil)))))))) (mark-macro! "clojure.core" "when-some")) (guard (e (#t #f)) (def-var! "clojure.core" "while" @@ -818,13 +818,13 @@ (mark-macro! "clojure.core" "while")) (guard (e (#t #f)) (def-var! "clojure.core" "dotimes" - (lambda (bindings . body) (let fnrec429 ((bindings bindings) (body (list->cseq body))) (let* ((i (jolt-invoke bindings 0.0)) (n (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "n__7__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") n))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "loop")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") i) (jolt-invoke (var-deref "clojure.core" "__sq1") 0.0))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "<")) (jolt-invoke (var-deref "clojure.core" "__sq1") i) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "n__7__auto")))) body (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "recur")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "inc")) (jolt-invoke (var-deref "clojure.core" "__sq1") i)))))))))))))) + (lambda (bindings . body) (let fnrec429 ((bindings bindings) (body (list->cseq body))) (let* ((i (jolt-invoke bindings 0)) (n (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "n__7__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") n))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "loop")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") i) (jolt-invoke (var-deref "clojure.core" "__sq1") 0))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "<")) (jolt-invoke (var-deref "clojure.core" "__sq1") i) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "n__7__auto")))) body (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "recur")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "inc")) (jolt-invoke (var-deref "clojure.core" "__sq1") i)))))))))))))) (mark-macro! "clojure.core" "dotimes")) (guard (e (#t #f)) (def-var! "clojure.core" "fresh-sym" (letrec ((fresh-sym (lambda () (let fnrec430 () (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "gensym") ))))))) fresh-sym))) (guard (e (#t #f)) (def-var! "clojure.core" "when-first" - (lambda (bindings . body) (let fnrec431 ((bindings bindings) (body (list->cseq body))) (let* ((x (jolt-invoke bindings 0.0)) (coll (jolt-invoke bindings 1.0))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when-let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") x) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") coll))))) body))))) + (lambda (bindings . body) (let fnrec431 ((bindings bindings) (body (list->cseq body))) (let* ((x (jolt-invoke bindings 0)) (coll (jolt-invoke bindings 1))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when-let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") x) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "first")) (jolt-invoke (var-deref "clojure.core" "__sq1") coll))))) body))))) (mark-macro! "clojure.core" "when-first")) (guard (e (#t #f)) (def-var! "clojure.core" "doto" @@ -846,11 +846,11 @@ (mark-macro! "clojure.core" "some->>")) (guard (e (#t #f)) (def-var! "clojure.core" "cond->>" - (lambda (expr . clauses) (let fnrec442 ((expr expr) (clauses (list->cseq clauses))) (let* ((g (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (steps (jolt-map (lambda (pair) (let fnrec443 ((pair pair)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first pair)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "->>")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") pair)))) (jolt-invoke (var-deref "clojure.core" "__sq1") g)))) (jolt-invoke (var-deref "clojure.core" "partition") 2.0 clauses)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") expr) (jolt-invoke (var-deref "clojure.core" "thread-binds") g steps))) (jolt-invoke (var-deref "clojure.core" "__sq1") (if (jolt-empty? steps) g (jolt-last steps)))))))) + (lambda (expr . clauses) (let fnrec442 ((expr expr) (clauses (list->cseq clauses))) (let* ((g (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (steps (jolt-map (lambda (pair) (let fnrec443 ((pair pair)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first pair)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "->>")) (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") pair)))) (jolt-invoke (var-deref "clojure.core" "__sq1") g)))) (jolt-invoke (var-deref "clojure.core" "partition") 2 clauses)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") g) (jolt-invoke (var-deref "clojure.core" "__sq1") expr) (jolt-invoke (var-deref "clojure.core" "thread-binds") g steps))) (jolt-invoke (var-deref "clojure.core" "__sq1") (if (jolt-empty? steps) g (jolt-last steps)))))))) (mark-macro! "clojure.core" "cond->>")) (guard (e (#t #f)) (def-var! "clojure.core" "assert" - (lambda (x . G__23) (let fnrec444 ((x x) (G__23 (list->cseq G__23))) (let* ((G__24 G__23) (message (jolt-nth G__24 0.0 jolt-nil))) (let* ((msg (if (jolt-truthy? message) message (jolt-invoke (var-deref "clojure.core" "str") "Assert failed: " (jolt-invoke (var-deref "clojure.core" "pr-str") x))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when-not")) (jolt-invoke (var-deref "clojure.core" "__sq1") x) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") msg) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") )))))))))))) + (lambda (x . G__23) (let fnrec444 ((x x) (G__23 (list->cseq G__23))) (let* ((G__24 G__23) (message (jolt-nth G__24 0 jolt-nil))) (let* ((msg (if (jolt-truthy? message) message (jolt-invoke (var-deref "clojure.core" "str") "Assert failed: " (jolt-invoke (var-deref "clojure.core" "pr-str") x))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "when-not")) (jolt-invoke (var-deref "clojure.core" "__sq1") x) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") msg) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") )))))))))))) (mark-macro! "clojure.core" "assert")) (guard (e (#t #f)) (def-var! "clojure.core" "pvalues" @@ -870,17 +870,17 @@ (mark-macro! "clojure.core" "letfn")) (guard (e (#t #f)) (def-var! "clojure.core" "binding" - (lambda (bindings . body) (let fnrec451 ((bindings bindings) (body (list->cseq body))) (let* ((pairs (jolt-reduce (lambda (acc p) (let fnrec452 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first p)))) (jolt-invoke (var-deref "clojure.core" "second") p)))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2.0 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "frame__8__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "array-map")) pairs)))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "push-thread-bindings")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "frame__8__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "try")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "finally")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "pop-thread-bindings"))))))))))))) + (lambda (bindings . body) (let fnrec451 ((bindings bindings) (body (list->cseq body))) (let* ((pairs (jolt-reduce (lambda (acc p) (let fnrec452 ((acc acc) (p p)) (jolt-conj (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "var")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first p)))) (jolt-invoke (var-deref "clojure.core" "second") p)))) (jolt-vector) (jolt-invoke (var-deref "clojure.core" "partition") 2 bindings)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "let*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "frame__8__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "array-map")) pairs)))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "push-thread-bindings")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "frame__8__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "try")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) body)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "finally")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "pop-thread-bindings"))))))))))))) (mark-macro! "clojure.core" "binding")) (guard (e (#t #f)) (def-var! "clojure.core" "condp" - (lambda (pred expr . clauses) (let fnrec453 ((pred pred) (expr expr) (clauses (list->cseq clauses))) (let* ((gp (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (ge (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (emit (letrec ((emit (lambda (args) (let fnrec454 ((args args)) (let* ((n (if (jolt= (keyword #f ">>") (jolt-invoke (var-deref "clojure.core" "second") args)) 3.0 2.0)) (clause (jolt-take n args)) (more (jolt-drop n args)) (cn (jolt-count clause))) (if (jolt= 0.0 cn) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "str")) (jolt-invoke (var-deref "clojure.core" "__sq1") "No matching clause: ") (jolt-invoke (var-deref "clojure.core" "__sq1") ge))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") ))))) (if (jolt= 1.0 cn) (jolt-first clause) (if (jolt= 2.0 cn) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") ge))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit more))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "if-let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "p__9__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") ge))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth clause 2.0)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "p__9__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit more))) jolt-nil))))))))) emit))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") pred) (jolt-invoke (var-deref "clojure.core" "__sq1") ge) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit clauses))))))) + (lambda (pred expr . clauses) (let fnrec453 ((pred pred) (expr expr) (clauses (list->cseq clauses))) (let* ((gp (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (ge (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (emit (letrec ((emit (lambda (args) (let fnrec454 ((args args)) (let* ((n (if (jolt= (keyword #f ">>") (jolt-invoke (var-deref "clojure.core" "second") args)) 3 2)) (clause (jolt-take n args)) (more (jolt-drop n args)) (cn (jolt-count clause))) (if (jolt= 0 cn) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "throw")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "ex-info")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "str")) (jolt-invoke (var-deref "clojure.core" "__sq1") "No matching clause: ") (jolt-invoke (var-deref "clojure.core" "__sq1") ge))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqmap") ))))) (if (jolt= 1 cn) (jolt-first clause) (if (jolt= 2 cn) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "if")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") ge))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "second") clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit more))) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "if-let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "p__9__auto")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first clause)) (jolt-invoke (var-deref "clojure.core" "__sq1") ge))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth clause 2)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "p__9__auto")))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit more))) jolt-nil))))))))) emit))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") gp) (jolt-invoke (var-deref "clojure.core" "__sq1") pred) (jolt-invoke (var-deref "clojure.core" "__sq1") ge) (jolt-invoke (var-deref "clojure.core" "__sq1") expr))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke emit clauses))))))) (mark-macro! "clojure.core" "condp")) (guard (e (#t #f)) (def-var! "clojure.core" "group-by-head" (letrec ((group-by-head (lambda (items) (let fnrec455 ((items items)) (jolt-reduce (lambda (acc x) (let fnrec456 ((acc acc) (x x)) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "symbol?") x))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.core" "nil?") x)))) (jolt-conj acc (jolt-vector x)) (jolt-conj (jolt-pop acc) (jolt-conj (jolt-peek acc) x))))) (jolt-vector) items))))) group-by-head))) (guard (e (#t #f)) (def-var! "clojure.core" "deftype" - (lambda (tname fields . body) (let fnrec457 ((tname tname) (fields fields) (body (list->cseq body))) (let* ((unwrap (lambda (x) (let fnrec459 ((x x)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "seq?") x))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first x)))) (if (jolt-truthy? and__13__auto) (jolt= "with-meta" (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "second") x) x)))) (tname (jolt-invoke unwrap tname)) (fields (jolt-map unwrap fields)) (arrow (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "->" (jolt-invoke (var-deref "clojure.core" "name") tname)))) (field-kws (jolt-map (lambda (f) (let fnrec460 ((f f)) (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))) fields)) (field-tags (jolt-map (lambda (f) (let fnrec461 ((f f)) (let* ((mt (jolt-invoke (var-deref "clojure.core" "meta") f))) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (jolt-get mt (keyword #f "tag")) and__13__auto))) (jolt-get mt (keyword #f "tag")) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (jolt-get mt (keyword #f "num")) and__13__auto))) "num" (if (jolt-truthy? (keyword #f "else")) jolt-nil jolt-nil)))))) fields)) (field-muts (jolt-map (lambda (f) (let fnrec462 ((f f)) (let* ((mt (jolt-invoke (var-deref "clojure.core" "meta") f))) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (let* ((or__14__auto (jolt-get mt (keyword #f "unsynchronized-mutable")))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-get mt (keyword #f "volatile-mutable")))) and__13__auto))) #t #f)))) fields)) (impl (lambda (proto specs) (let fnrec463 ((proto proto) (specs specs)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "extend-type")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-map (lambda (spec) (let fnrec464 ((spec spec)) (let* ((argv (jolt-nth spec 1.0)) (inst (jolt-first argv)) (binds (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (f) (let fnrec465 ((f f)) (let* ((_o$466 f) (_o$467 (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") inst) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) (jolt-vector _o$466 _o$467)))) fields)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first spec)) (jolt-invoke (var-deref "clojure.core" "__sq1") argv) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) (jolt-drop 2.0 spec))))))) specs)))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "make-deftype-ctor")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-kws)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-tags)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-muts)))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") arrow) (jolt-invoke (var-deref "clojure.core" "__sq1") tname))) (jolt-map (lambda (g) (let fnrec458 ((g g)) (jolt-invoke impl (jolt-first g) (jolt-rest g)))) (jolt-invoke (var-deref "clojure.core" "group-by-head") body)) (jolt-invoke (var-deref "clojure.core" "__sq1") tname)))))) + (lambda (tname fields . body) (let fnrec457 ((tname tname) (fields fields) (body (list->cseq body))) (let* ((unwrap (lambda (x) (let fnrec459 ((x x)) (if (jolt-truthy? (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "seq?") x))) (if (jolt-truthy? and__13__auto) (let* ((and__13__auto (jolt-invoke (var-deref "clojure.core" "symbol?") (jolt-first x)))) (if (jolt-truthy? and__13__auto) (jolt= "with-meta" (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) and__13__auto)) and__13__auto))) (jolt-invoke (var-deref "clojure.core" "second") x) x)))) (tname (jolt-invoke unwrap tname)) (fields (jolt-map unwrap fields)) (arrow (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "->" (jolt-invoke (var-deref "clojure.core" "name") tname)))) (field-kws (jolt-map (lambda (f) (let fnrec460 ((f f)) (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))) fields)) (field-tags (jolt-map (lambda (f) (let fnrec461 ((f f)) (let* ((mt (jolt-invoke (var-deref "clojure.core" "meta") f))) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (jolt-get mt (keyword #f "tag")) and__13__auto))) (jolt-get mt (keyword #f "tag")) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (jolt-get mt (keyword #f "num")) and__13__auto))) "num" (if (jolt-truthy? (keyword #f "else")) jolt-nil jolt-nil)))))) fields)) (field-muts (jolt-map (lambda (f) (let fnrec462 ((f f)) (let* ((mt (jolt-invoke (var-deref "clojure.core" "meta") f))) (if (jolt-truthy? (let* ((and__13__auto mt)) (if (jolt-truthy? and__13__auto) (let* ((or__14__auto (jolt-get mt (keyword #f "unsynchronized-mutable")))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-get mt (keyword #f "volatile-mutable")))) and__13__auto))) #t #f)))) fields)) (impl (lambda (proto specs) (let fnrec463 ((proto proto) (specs specs)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "extend-type")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-map (lambda (spec) (let fnrec464 ((spec spec)) (let* ((argv (jolt-nth spec 1)) (inst (jolt-first argv)) (binds (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (f) (let fnrec465 ((f f)) (let* ((_o$466 f) (_o$467 (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") inst) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) (jolt-vector _o$466 _o$467)))) fields)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first spec)) (jolt-invoke (var-deref "clojure.core" "__sq1") argv) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) (jolt-drop 2 spec))))))) specs)))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "make-deftype-ctor")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "quote")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-kws)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-tags)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") field-muts)))))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") arrow) (jolt-invoke (var-deref "clojure.core" "__sq1") tname))) (jolt-map (lambda (g) (let fnrec458 ((g g)) (jolt-invoke impl (jolt-first g) (jolt-rest g)))) (jolt-invoke (var-deref "clojure.core" "group-by-head") body)) (jolt-invoke (var-deref "clojure.core" "__sq1") tname)))))) (mark-macro! "clojure.core" "deftype")) (guard (e (#t #f)) (def-var! "clojure.core" "defprotocol" @@ -893,10 +893,10 @@ (guard (e (#t #f)) (def-var! "clojure.core" "extends?" (letrec ((extends? (lambda (protocol atype) (let fnrec476 ((protocol protocol) (atype atype)) (let* ((want (jolt-invoke (var-deref "clojure.core" "name") atype)) (dotted (jolt-invoke (var-deref "clojure.core" "str") "." want)) (dlen (jolt-count dotted))) (jolt-invoke (var-deref "clojure.core" "boolean") (jolt-invoke (var-deref "clojure.core" "some") (lambda (t) (let fnrec477 ((t t)) (let* ((tn (jolt-invoke (var-deref "clojure.core" "name") t))) (let* ((or__14__auto (jolt= tn want))) (if (jolt-truthy? or__14__auto) or__14__auto (let* ((and__13__auto (> (jolt-count tn) dlen))) (if (jolt-truthy? and__13__auto) (jolt= (jolt-invoke (var-deref "clojure.core" "subs") tn (- (jolt-count tn) dlen)) dotted) and__13__auto))))))) (jolt-invoke (var-deref "clojure.core" "extenders") protocol)))))))) extends?))) (guard (e (#t #f)) - (def-var! "clojure.core" "extend" (letrec ((extend (lambda (atype . proto+mmaps) (let fnrec478 ((atype atype) (proto+mmaps (list->cseq proto+mmaps))) (let* ((s (jolt-seq proto+mmaps))) (let loop479 ((s s)) (if (jolt-truthy? s) (begin (let* ((proto (jolt-first s)) (mmap (jolt-invoke (var-deref "clojure.core" "second") s)) (pname (jolt-invoke (var-deref "clojure.core" "name") (jolt-get proto (keyword #f "name"))))) (begin (jolt-count (jolt-map (lambda (G__25) (let fnrec480 ((G__25 G__25)) (let* ((G__26 G__25) (k (jolt-nth G__26 0.0 jolt-nil)) (f (jolt-nth G__26 1.0 jolt-nil))) (begin (jolt-invoke (var-deref "clojure.core" "register-method") (jolt-invoke (var-deref "clojure.core" "name") atype) pname (jolt-invoke (var-deref "clojure.core" "name") k) f) jolt-nil)))) mmap)) jolt-nil)) (loop479 (jolt-invoke (var-deref "clojure.core" "nnext") s))) jolt-nil))))))) extend))) + (def-var! "clojure.core" "extend" (letrec ((extend (lambda (atype . proto+mmaps) (let fnrec478 ((atype atype) (proto+mmaps (list->cseq proto+mmaps))) (let* ((s (jolt-seq proto+mmaps))) (let loop479 ((s s)) (if (jolt-truthy? s) (begin (let* ((proto (jolt-first s)) (mmap (jolt-invoke (var-deref "clojure.core" "second") s)) (pname (jolt-invoke (var-deref "clojure.core" "name") (jolt-get proto (keyword #f "name"))))) (begin (jolt-count (jolt-map (lambda (G__25) (let fnrec480 ((G__25 G__25)) (let* ((G__26 G__25) (k (jolt-nth G__26 0 jolt-nil)) (f (jolt-nth G__26 1 jolt-nil))) (begin (jolt-invoke (var-deref "clojure.core" "register-method") (jolt-invoke (var-deref "clojure.core" "name") atype) pname (jolt-invoke (var-deref "clojure.core" "name") k) f) jolt-nil)))) mmap)) jolt-nil)) (loop479 (jolt-invoke (var-deref "clojure.core" "nnext") s))) jolt-nil))))))) extend))) (guard (e (#t #f)) (def-var! "clojure.core" "extend-type" - (lambda (tsym . body) (let fnrec481 ((tsym tsym) (body (list->cseq body))) (let* ((tname (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") tsym)) "nil" (jolt-invoke (var-deref "clojure.core" "name") tsym)))) (let* ((items (jolt-seq body)) (proto jolt-nil) (forms (jolt-vector))) (let loop482 ((items items) (proto proto) (forms forms)) (if (jolt-empty? items) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) forms) (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") x)) (loop482 (jolt-rest items) (jolt-invoke (var-deref "clojure.core" "name") x) forms) (loop482 (jolt-rest items) proto (jolt-conj forms (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "register-method")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth x 1.0)) (jolt-drop 2.0 x))))))))))))))) + (lambda (tsym . body) (let fnrec481 ((tsym tsym) (body (list->cseq body))) (let* ((tname (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") tsym)) "nil" (jolt-invoke (var-deref "clojure.core" "name") tsym)))) (let* ((items (jolt-seq body)) (proto jolt-nil) (forms (jolt-vector))) (let loop482 ((items items) (proto proto) (forms forms)) (if (jolt-empty? items) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) forms) (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") x)) (loop482 (jolt-rest items) (jolt-invoke (var-deref "clojure.core" "name") x) forms) (loop482 (jolt-rest items) proto (jolt-conj forms (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "register-method")) (jolt-invoke (var-deref "clojure.core" "__sq1") tname) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth x 1)) (jolt-drop 2 x))))))))))))))) (mark-macro! "clojure.core" "extend-type")) (guard (e (#t #f)) (def-var! "clojure.core" "extend-protocol" @@ -912,26 +912,26 @@ (mark-macro! "clojure.core" "definterface")) (guard (e (#t #f)) (def-var! "clojure.core" "reify" - (lambda forms (let fnrec487 ((forms (list->cseq forms))) (let* ((items (jolt-seq forms)) (protos (jolt-vector)) (methods (jolt-hash-map))) (let loop488 ((items items) (protos protos) (methods methods)) (if (jolt-empty? items) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "make-reified")) (jolt-invoke (var-deref "clojure.core" "__sq1") methods) (jolt-invoke (var-deref "clojure.core" "vec") (jolt-map (var-deref "clojure.core" "name") protos))) (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") x)) (loop488 (jolt-rest items) (jolt-conj protos x) methods) (loop488 (jolt-rest items) protos (jolt-assoc methods (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth x 1.0)) (jolt-drop 2.0 x)))))))))))) + (lambda forms (let fnrec487 ((forms (list->cseq forms))) (let* ((items (jolt-seq forms)) (protos (jolt-vector)) (methods (jolt-hash-map))) (let loop488 ((items items) (protos protos) (methods methods)) (if (jolt-empty? items) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "make-reified")) (jolt-invoke (var-deref "clojure.core" "__sq1") methods) (jolt-invoke (var-deref "clojure.core" "vec") (jolt-map (var-deref "clojure.core" "name") protos))) (let* ((x (jolt-first items))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "symbol?") x)) (loop488 (jolt-rest items) (jolt-conj protos x) methods) (loop488 (jolt-rest items) protos (jolt-assoc methods (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") (jolt-first x))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-nth x 1)) (jolt-drop 2 x)))))))))))) (mark-macro! "clojure.core" "reify")) (guard (e (#t #f)) (def-var! "clojure.core" "defrecord" - (lambda (name-sym fields . body) (let fnrec489 ((name-sym name-sym) (fields fields) (body (list->cseq body))) (let* ((tn (jolt-invoke (var-deref "clojure.core" "name") name-sym)) (arrow (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "->" tn))) (mapf (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "map->" tn))) (m (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (impl (lambda (proto specs) (let fnrec492 ((proto proto) (specs specs)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "extend-type")) (jolt-invoke (var-deref "clojure.core" "__sq1") name-sym) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-map (lambda (spec) (let fnrec493 ((spec spec)) (let* ((argv (jolt-nth spec 1.0)) (inst (jolt-first argv)) (hinted (jolt-assoc argv 0.0 (jolt-invoke (var-deref "clojure.core" "vary-meta") inst jolt-assoc (keyword #f "tag") (jolt-invoke (var-deref "clojure.core" "name") name-sym)))) (binds (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (f) (let fnrec494 ((f f)) (let* ((_o$495 f) (_o$496 (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") inst) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) (jolt-vector _o$495 _o$496)))) fields)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first spec)) (jolt-invoke (var-deref "clojure.core" "__sq1") hinted) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) (jolt-drop 2.0 spec))))))) specs)))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "deftype")) (jolt-invoke (var-deref "clojure.core" "__sq1") name-sym) (jolt-invoke (var-deref "clojure.core" "__sq1") fields))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") mapf) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") m))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") arrow) (jolt-map (lambda (f) (let fnrec490 ((f f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") m) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) fields))))))) (jolt-map (lambda (g) (let fnrec491 ((g g)) (jolt-invoke impl (jolt-first g) (jolt-rest g)))) (jolt-invoke (var-deref "clojure.core" "group-by-head") body))))))) + (lambda (name-sym fields . body) (let fnrec489 ((name-sym name-sym) (fields fields) (body (list->cseq body))) (let* ((tn (jolt-invoke (var-deref "clojure.core" "name") name-sym)) (arrow (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "->" tn))) (mapf (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "map->" tn))) (m (jolt-invoke (var-deref "clojure.core" "fresh-sym") )) (impl (lambda (proto specs) (let fnrec492 ((proto proto) (specs specs)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "extend-type")) (jolt-invoke (var-deref "clojure.core" "__sq1") name-sym) (jolt-invoke (var-deref "clojure.core" "__sq1") proto) (jolt-map (lambda (spec) (let fnrec493 ((spec spec)) (let* ((argv (jolt-nth spec 1)) (inst (jolt-first argv)) (hinted (jolt-assoc argv 0 (jolt-invoke (var-deref "clojure.core" "vary-meta") inst jolt-assoc (keyword #f "tag") (jolt-invoke (var-deref "clojure.core" "name") name-sym)))) (binds (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "mapcat") (lambda (f) (let fnrec494 ((f f)) (let* ((_o$495 f) (_o$496 (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") inst) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) (jolt-vector _o$495 _o$496)))) fields)))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-first spec)) (jolt-invoke (var-deref "clojure.core" "__sq1") hinted) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "let")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") binds)) (jolt-drop 2 spec))))))) specs)))))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "deftype")) (jolt-invoke (var-deref "clojure.core" "__sq1") name-sym) (jolt-invoke (var-deref "clojure.core" "__sq1") fields))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "def")) (jolt-invoke (var-deref "clojure.core" "__sq1") mapf) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "fn*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") m))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") arrow) (jolt-map (lambda (f) (let fnrec490 ((f f)) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "get")) (jolt-invoke (var-deref "clojure.core" "__sq1") m) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "keyword") (jolt-invoke (var-deref "clojure.core" "name") f)))))) fields))))))) (jolt-map (lambda (g) (let fnrec491 ((g g)) (jolt-invoke impl (jolt-first g) (jolt-rest g)))) (jolt-invoke (var-deref "clojure.core" "group-by-head") body))))))) (mark-macro! "clojure.core" "defrecord")) (guard (e (#t #f)) (def-var! "clojure.core" "memfn" (lambda (method-name . args) (let fnrec497 ((method-name method-name) (args (list->cseq args))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "fn")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "target__12__auto")) args)) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "symbol") (jolt-invoke (var-deref "clojure.core" "str") "." (jolt-invoke (var-deref "clojure.core" "name") method-name)))) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "target__12__auto")) args)))))) (mark-macro! "clojure.core" "memfn")) (guard (e (#t #f)) - (def-var! "clojure.core" "distinct" (letrec ((distinct (case-lambda (() (let fnrec116 () (lambda (rf) (let fnrec117 ((rf rf)) (let* ((seen (jolt-invoke (var-deref "clojure.core" "volatile!") (jolt-hash-set)))) (case-lambda (() (let fnrec118 () (jolt-invoke rf ))) ((result) (let fnrec119 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec120 ((result result) (input input)) (if (jolt-contains? (jolt-invoke (var-deref "clojure.core" "deref") seen) input) result (begin (jolt-invoke (var-deref "clojure.core" "vswap!") seen jolt-conj input) (jolt-invoke rf result input))))))))))) ((coll) (let fnrec121 ((coll coll)) (let* ((step (letrec ((step (lambda (xs seen) (let fnrec122 ((xs xs) (seen seen)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec123 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-invoke (lambda (G__13 seen) (let fnrec124 ((G__13 G__13) (seen seen)) (let* ((G__14 G__13) (f (jolt-nth G__14 0.0 jolt-nil)) (xs G__14)) (let* ((temp__15__auto (jolt-seq xs))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (if (jolt-contains? seen f) (fnrec124 (jolt-rest s) seen) (jolt-cons f (jolt-invoke step (jolt-rest s) (jolt-conj seen f))))) jolt-nil))))) xs seen))))))))) step))) (jolt-invoke step coll (jolt-hash-set)))))))) distinct))) + (def-var! "clojure.core" "distinct" (letrec ((distinct (case-lambda (() (let fnrec116 () (lambda (rf) (let fnrec117 ((rf rf)) (let* ((seen (jolt-invoke (var-deref "clojure.core" "volatile!") (jolt-hash-set)))) (case-lambda (() (let fnrec118 () (jolt-invoke rf ))) ((result) (let fnrec119 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec120 ((result result) (input input)) (if (jolt-contains? (jolt-invoke (var-deref "clojure.core" "deref") seen) input) result (begin (jolt-invoke (var-deref "clojure.core" "vswap!") seen jolt-conj input) (jolt-invoke rf result input))))))))))) ((coll) (let fnrec121 ((coll coll)) (let* ((step (letrec ((step (lambda (xs seen) (let fnrec122 ((xs xs) (seen seen)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec123 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-invoke (lambda (G__13 seen) (let fnrec124 ((G__13 G__13) (seen seen)) (let* ((G__14 G__13) (f (jolt-nth G__14 0 jolt-nil)) (xs G__14)) (let* ((temp__15__auto (jolt-seq xs))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (if (jolt-contains? seen f) (fnrec124 (jolt-rest s) seen) (jolt-cons f (jolt-invoke step (jolt-rest s) (jolt-conj seen f))))) jolt-nil))))) xs seen))))))))) step))) (jolt-invoke step coll (jolt-hash-set)))))))) distinct))) (guard (e (#t #f)) (def-var! "clojure.core" "keep" (letrec ((keep (case-lambda ((f) (let fnrec125 ((f f)) (lambda (rf) (let fnrec126 ((rf rf)) (case-lambda (() (let fnrec127 () (jolt-invoke rf ))) ((result) (let fnrec128 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec129 ((result result) (input input)) (let* ((v (jolt-invoke f input))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") v)) result (jolt-invoke rf result v)))))))))) ((f coll) (let fnrec130 ((f f) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec131 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (let* ((x (jolt-invoke f (jolt-first s)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") x)) (jolt-invoke keep f (jolt-rest s)) (jolt-cons x (jolt-invoke keep f (jolt-rest s)))))) jolt-nil))))))))))) keep))) (guard (e (#t #f)) - (def-var! "clojure.core" "keep-indexed" (letrec ((keep-indexed (case-lambda ((f) (let fnrec132 ((f f)) (lambda (rf) (let fnrec133 ((rf rf)) (let* ((ia (jolt-invoke (var-deref "clojure.core" "volatile!") -1.0))) (case-lambda (() (let fnrec134 () (jolt-invoke rf ))) ((result) (let fnrec135 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec136 ((result result) (input input)) (let* ((i (jolt-invoke (var-deref "clojure.core" "vswap!") ia jolt-inc)) (v (jolt-invoke f i input))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") v)) result (jolt-invoke rf result v))))))))))) ((f coll) (let fnrec137 ((f f) (coll coll)) (letrec* ((keepi (letrec ((keepi (lambda (idx coll) (let fnrec138 ((idx idx) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec139 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (let* ((x (jolt-invoke f idx (jolt-first s)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") x)) (jolt-invoke keepi (jolt-inc idx) (jolt-rest s)) (jolt-cons x (jolt-invoke keepi (jolt-inc idx) (jolt-rest s)))))) jolt-nil)))))))))) keepi))) (jolt-invoke keepi 0.0 coll))))))) keep-indexed))) + (def-var! "clojure.core" "keep-indexed" (letrec ((keep-indexed (case-lambda ((f) (let fnrec132 ((f f)) (lambda (rf) (let fnrec133 ((rf rf)) (let* ((ia (jolt-invoke (var-deref "clojure.core" "volatile!") -1))) (case-lambda (() (let fnrec134 () (jolt-invoke rf ))) ((result) (let fnrec135 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec136 ((result result) (input input)) (let* ((i (jolt-invoke (var-deref "clojure.core" "vswap!") ia jolt-inc)) (v (jolt-invoke f i input))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") v)) result (jolt-invoke rf result v))))))))))) ((f coll) (let fnrec137 ((f f) (coll coll)) (letrec* ((keepi (letrec ((keepi (lambda (idx coll) (let fnrec138 ((idx idx) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec139 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (let* ((x (jolt-invoke f idx (jolt-first s)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") x)) (jolt-invoke keepi (jolt-inc idx) (jolt-rest s)) (jolt-cons x (jolt-invoke keepi (jolt-inc idx) (jolt-rest s)))))) jolt-nil)))))))))) keepi))) (jolt-invoke keepi 0 coll))))))) keep-indexed))) (guard (e (#t #f)) - (def-var! "clojure.core" "map-indexed" (letrec ((map-indexed (case-lambda ((f) (let fnrec140 ((f f)) (lambda (rf) (let fnrec141 ((rf rf)) (let* ((i (jolt-invoke (var-deref "clojure.core" "volatile!") -1.0))) (case-lambda (() (let fnrec142 () (jolt-invoke rf ))) ((result) (let fnrec143 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec144 ((result result) (input input)) (jolt-invoke rf result (jolt-invoke f (jolt-invoke (var-deref "clojure.core" "vswap!") i jolt-inc) input)))))))))) ((f coll) (let fnrec145 ((f f) (coll coll)) (letrec* ((mapi (letrec ((mapi (lambda (idx coll) (let fnrec146 ((idx idx) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec147 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (jolt-cons (jolt-invoke f idx (jolt-first s)) (jolt-invoke mapi (jolt-inc idx) (jolt-rest s)))) jolt-nil)))))))))) mapi))) (jolt-invoke mapi 0.0 coll))))))) map-indexed))) + (def-var! "clojure.core" "map-indexed" (letrec ((map-indexed (case-lambda ((f) (let fnrec140 ((f f)) (lambda (rf) (let fnrec141 ((rf rf)) (let* ((i (jolt-invoke (var-deref "clojure.core" "volatile!") -1))) (case-lambda (() (let fnrec142 () (jolt-invoke rf ))) ((result) (let fnrec143 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec144 ((result result) (input input)) (jolt-invoke rf result (jolt-invoke f (jolt-invoke (var-deref "clojure.core" "vswap!") i jolt-inc) input)))))))))) ((f coll) (let fnrec145 ((f f) (coll coll)) (letrec* ((mapi (letrec ((mapi (lambda (idx coll) (let fnrec146 ((idx idx) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec147 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (jolt-cons (jolt-invoke f idx (jolt-first s)) (jolt-invoke mapi (jolt-inc idx) (jolt-rest s)))) jolt-nil)))))))))) mapi))) (jolt-invoke mapi 0 coll))))))) map-indexed))) (guard (e (#t #f)) - (def-var! "clojure.core" "cycle" (letrec ((cycle (lambda (coll) (let fnrec148 ((coll coll)) (let* ((temp__4__auto (jolt-seq coll))) (if (jolt-truthy? temp__4__auto) (let* ((vals temp__4__auto)) (let* ((n (jolt-count vals))) (letrec* ((cstep (letrec ((cstep (lambda (i) (let fnrec149 ((i i)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec150 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-cons (jolt-nth vals (modulo i n)) (jolt-invoke cstep (jolt-inc i))))))))))) cstep))) (jolt-invoke cstep 0.0)))) (jolt-list ))))))) cycle))) + (def-var! "clojure.core" "cycle" (letrec ((cycle (lambda (coll) (let fnrec148 ((coll coll)) (let* ((temp__4__auto (jolt-seq coll))) (if (jolt-truthy? temp__4__auto) (let* ((vals temp__4__auto)) (let* ((n (jolt-count vals))) (letrec* ((cstep (letrec ((cstep (lambda (i) (let fnrec149 ((i i)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec150 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-cons (jolt-nth vals (modulo i n)) (jolt-invoke cstep (jolt-inc i))))))))))) cstep))) (jolt-invoke cstep 0)))) (jolt-list ))))))) cycle))) (guard (e (#t #f)) (def-var! "clojure.core" "repeatedly" (letrec ((repeatedly (case-lambda ((f) (let fnrec151 ((f f)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec152 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-cons (jolt-invoke f ) (jolt-invoke repeatedly f)))))))) ((n f) (let fnrec153 ((n n) (f f)) (jolt-take n (jolt-invoke repeatedly f))))))) repeatedly))) (guard (e (#t #f)) @@ -939,11 +939,11 @@ (guard (e (#t #f)) (def-var! "clojure.core" "iterate" (letrec ((iterate (lambda (f x) (let fnrec157 ((f f) (x x)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec158 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (jolt-cons x (jolt-invoke iterate f (jolt-invoke f x))))))))))) iterate))) (guard (e (#t #f)) - (def-var! "clojure.core" "partition-all" (letrec ((partition-all (case-lambda ((n) (let fnrec159 ((n n)) (lambda (rf) (let fnrec160 ((rf rf)) (let* ((a (jolt-invoke (var-deref "clojure.core" "volatile!") (jolt-vector)))) (case-lambda (() (let fnrec161 () (jolt-invoke rf ))) ((result) (let fnrec162 ((result result)) (let* ((result (if (jolt-zero? (jolt-count (jolt-invoke (var-deref "clojure.core" "deref") a))) result (let* ((v (jolt-invoke (var-deref "clojure.core" "deref") a))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") a (jolt-vector)) (jolt-invoke (var-deref "clojure.core" "unreduced") (jolt-invoke rf result v))))))) (jolt-invoke rf result)))) ((result input) (let fnrec163 ((result result) (input input)) (begin (jolt-invoke (var-deref "clojure.core" "vswap!") a jolt-conj input) (if (jolt= n (jolt-count (jolt-invoke (var-deref "clojure.core" "deref") a))) (let* ((v (jolt-invoke (var-deref "clojure.core" "deref") a))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") a (jolt-vector)) (jolt-invoke rf result v))) result)))))))))) ((n coll) (let fnrec164 ((n n) (coll coll)) (letrec* ((go (letrec ((go (lambda (s) (let fnrec165 ((s s)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec166 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (if (jolt-truthy? (jolt-seq s)) (let* ((i 0.0) (chunk (jolt-vector)) (cur s)) (let loop167 ((i i) (chunk chunk) (cur cur)) (if (jolt-truthy? (let* ((and__13__auto (< i n))) (if (jolt-truthy? and__13__auto) (jolt-seq cur) and__13__auto))) (loop167 (jolt-inc i) (jolt-conj chunk (jolt-first cur)) (jolt-rest cur)) (jolt-cons chunk (jolt-invoke go cur))))) jolt-nil))))))))) go))) (jolt-invoke go coll)))) ((n step coll) (let fnrec168 ((n n) (step step) (coll coll)) (letrec* ((go (letrec ((go (lambda (s) (let fnrec169 ((s s)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec170 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (if (jolt-truthy? (jolt-seq s)) (jolt-cons (jolt-take n s) (jolt-invoke go (jolt-invoke (var-deref "clojure.core" "nthrest") s step))) jolt-nil))))))))) go))) (jolt-invoke go coll))))))) partition-all))) + (def-var! "clojure.core" "partition-all" (letrec ((partition-all (case-lambda ((n) (let fnrec159 ((n n)) (lambda (rf) (let fnrec160 ((rf rf)) (let* ((a (jolt-invoke (var-deref "clojure.core" "volatile!") (jolt-vector)))) (case-lambda (() (let fnrec161 () (jolt-invoke rf ))) ((result) (let fnrec162 ((result result)) (let* ((result (if (jolt-zero? (jolt-count (jolt-invoke (var-deref "clojure.core" "deref") a))) result (let* ((v (jolt-invoke (var-deref "clojure.core" "deref") a))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") a (jolt-vector)) (jolt-invoke (var-deref "clojure.core" "unreduced") (jolt-invoke rf result v))))))) (jolt-invoke rf result)))) ((result input) (let fnrec163 ((result result) (input input)) (begin (jolt-invoke (var-deref "clojure.core" "vswap!") a jolt-conj input) (if (jolt= n (jolt-count (jolt-invoke (var-deref "clojure.core" "deref") a))) (let* ((v (jolt-invoke (var-deref "clojure.core" "deref") a))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") a (jolt-vector)) (jolt-invoke rf result v))) result)))))))))) ((n coll) (let fnrec164 ((n n) (coll coll)) (letrec* ((go (letrec ((go (lambda (s) (let fnrec165 ((s s)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec166 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (if (jolt-truthy? (jolt-seq s)) (let* ((i 0) (chunk (jolt-vector)) (cur s)) (let loop167 ((i i) (chunk chunk) (cur cur)) (if (jolt-truthy? (let* ((and__13__auto (< i n))) (if (jolt-truthy? and__13__auto) (jolt-seq cur) and__13__auto))) (loop167 (jolt-inc i) (jolt-conj chunk (jolt-first cur)) (jolt-rest cur)) (jolt-cons chunk (jolt-invoke go cur))))) jolt-nil))))))))) go))) (jolt-invoke go coll)))) ((n step coll) (let fnrec168 ((n n) (step step) (coll coll)) (letrec* ((go (letrec ((go (lambda (s) (let fnrec169 ((s s)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec170 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (if (jolt-truthy? (jolt-seq s)) (jolt-cons (jolt-take n s) (jolt-invoke go (jolt-invoke (var-deref "clojure.core" "nthrest") s step))) jolt-nil))))))))) go))) (jolt-invoke go coll))))))) partition-all))) (guard (e (#t #f)) - (def-var! "clojure.core" "interpose" (letrec ((interpose (case-lambda ((sep) (let fnrec171 ((sep sep)) (lambda (rf) (let fnrec172 ((rf rf)) (let* ((started (jolt-invoke (var-deref "clojure.core" "volatile!") #f))) (case-lambda (() (let fnrec173 () (jolt-invoke rf ))) ((result) (let fnrec174 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec175 ((result result) (input input)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") started)) (let* ((sepr (jolt-invoke rf result sep))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "reduced?") sepr)) sepr (jolt-invoke rf sepr input))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") started #t) (jolt-invoke rf result input))))))))))) ((sep coll) (let fnrec176 ((sep sep) (coll coll)) (jolt-drop 1.0 (jolt-invoke (var-deref "clojure.core" "interleave") (jolt-invoke (var-deref "clojure.core" "repeat") sep) coll))))))) interpose))) + (def-var! "clojure.core" "interpose" (letrec ((interpose (case-lambda ((sep) (let fnrec171 ((sep sep)) (lambda (rf) (let fnrec172 ((rf rf)) (let* ((started (jolt-invoke (var-deref "clojure.core" "volatile!") #f))) (case-lambda (() (let fnrec173 () (jolt-invoke rf ))) ((result) (let fnrec174 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec175 ((result result) (input input)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "deref") started)) (let* ((sepr (jolt-invoke rf result sep))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "reduced?") sepr)) sepr (jolt-invoke rf sepr input))) (begin (jolt-invoke (var-deref "clojure.core" "vreset!") started #t) (jolt-invoke rf result input))))))))))) ((sep coll) (let fnrec176 ((sep sep) (coll coll)) (jolt-drop 1 (jolt-invoke (var-deref "clojure.core" "interleave") (jolt-invoke (var-deref "clojure.core" "repeat") sep) coll))))))) interpose))) (guard (e (#t #f)) - (def-var! "clojure.core" "take-nth" (letrec ((take-nth (case-lambda ((n) (let fnrec177 ((n n)) (lambda (rf) (let fnrec178 ((rf rf)) (let* ((iv (jolt-invoke (var-deref "clojure.core" "volatile!") -1.0))) (case-lambda (() (let fnrec179 () (jolt-invoke rf ))) ((result) (let fnrec180 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec181 ((result result) (input input)) (let* ((i (jolt-invoke (var-deref "clojure.core" "vswap!") iv jolt-inc))) (if (jolt-zero? (remainder i n)) (jolt-invoke rf result input) result)))))))))) ((n coll) (let fnrec182 ((n n) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec183 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (jolt-cons (jolt-first s) (jolt-invoke take-nth n (jolt-drop n s)))) jolt-nil))))))))))) take-nth))) + (def-var! "clojure.core" "take-nth" (letrec ((take-nth (case-lambda ((n) (let fnrec177 ((n n)) (lambda (rf) (let fnrec178 ((rf rf)) (let* ((iv (jolt-invoke (var-deref "clojure.core" "volatile!") -1))) (case-lambda (() (let fnrec179 () (jolt-invoke rf ))) ((result) (let fnrec180 ((result result)) (jolt-invoke rf result))) ((result input) (let fnrec181 ((result result) (input input)) (let* ((i (jolt-invoke (var-deref "clojure.core" "vswap!") iv jolt-inc))) (if (jolt-zero? (remainder i n)) (jolt-invoke rf result input) result)))))))))) ((n coll) (let fnrec182 ((n n) (coll coll)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec183 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((temp__15__auto (jolt-seq coll))) (if (jolt-truthy? temp__15__auto) (let* ((s temp__15__auto)) (jolt-cons (jolt-first s) (jolt-invoke take-nth n (jolt-drop n s)))) jolt-nil))))))))))) take-nth))) (guard (e (#t #f)) (def-var! "clojure.core" "pmap" (letrec ((pmap (case-lambda ((f coll) (let fnrec184 ((f f) (coll coll)) (jolt-map (var-deref "clojure.core" "deref") (jolt-invoke (var-deref "clojure.core" "doall") (jolt-map (lambda (x) (let fnrec185 ((x x)) (jolt-invoke (var-deref "clojure.core" "future-call") (lambda () (let fnrec186 () (jolt-invoke f x)))))) coll))))) ((f coll . colls) (let fnrec187 ((f f) (coll coll) (colls (list->cseq colls))) (jolt-invoke pmap (lambda (xs) (let fnrec188 ((xs xs)) (jolt-apply f xs))) (jolt-apply jolt-map jolt-vector coll colls))))))) pmap))) (guard (e (#t #f)) @@ -951,11 +951,11 @@ (guard (e (#t #f)) (def-var-with-meta! "clojure.core" "reader-eof" (keyword "jolt" "reader-eof") (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var! "clojure.core" "__string-reader" (letrec ((__string-reader (lambda (s) (let fnrec191 ((s s)) (let* ((buf (jolt-invoke (var-deref "clojure.core" "atom") s))) (let* ((_o$194 (keyword #f "buf")) (_o$195 buf) (_o$196 (keyword #f "fill-fn")) (_o$197 jolt-nil) (_o$198 (keyword #f "read-line-fn")) (_o$199 (lambda () (let fnrec192 () (let* ((cur (jolt-invoke (var-deref "clojure.core" "deref") buf))) (if (jolt-pos? (jolt-count cur)) (let* ((i (jolt-invoke (var-deref "clojure.core" "str-find") "\n" cur))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") i)) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf "") cur) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-invoke (var-deref "clojure.core" "subs") cur (jolt-inc i))) (jolt-invoke (var-deref "clojure.core" "subs") cur 0.0 i)))) jolt-nil))))) (_o$200 (keyword #f "read-fn")) (_o$201 (lambda () (let fnrec193 () (let* ((r (jolt-invoke (var-deref "clojure.core" "__parse-next") (jolt-invoke (var-deref "clojure.core" "deref") buf)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (var-deref "clojure.core" "reader-eof") (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-nth r 1.0)) (jolt-nth r 0.0)))))))) (jolt-hash-map _o$194 _o$195 _o$196 _o$197 _o$198 _o$199 _o$200 _o$201))))))) __string-reader))) + (def-var! "clojure.core" "__string-reader" (letrec ((__string-reader (lambda (s) (let fnrec191 ((s s)) (let* ((buf (jolt-invoke (var-deref "clojure.core" "atom") s))) (let* ((_o$194 (keyword #f "buf")) (_o$195 buf) (_o$196 (keyword #f "fill-fn")) (_o$197 jolt-nil) (_o$198 (keyword #f "read-line-fn")) (_o$199 (lambda () (let fnrec192 () (let* ((cur (jolt-invoke (var-deref "clojure.core" "deref") buf))) (if (jolt-pos? (jolt-count cur)) (let* ((i (jolt-invoke (var-deref "clojure.core" "str-find") "\n" cur))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") i)) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf "") cur) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-invoke (var-deref "clojure.core" "subs") cur (jolt-inc i))) (jolt-invoke (var-deref "clojure.core" "subs") cur 0 i)))) jolt-nil))))) (_o$200 (keyword #f "read-fn")) (_o$201 (lambda () (let fnrec193 () (let* ((r (jolt-invoke (var-deref "clojure.core" "__parse-next") (jolt-invoke (var-deref "clojure.core" "deref") buf)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (var-deref "clojure.core" "reader-eof") (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-nth r 1)) (jolt-nth r 0)))))))) (jolt-hash-map _o$194 _o$195 _o$196 _o$197 _o$198 _o$199 _o$200 _o$201))))))) __string-reader))) (guard (e (#t #f)) (def-var-with-meta! "clojure.core" "stdin-buf" (jolt-invoke (var-deref "clojure.core" "atom") "") (jolt-hash-map (keyword #f "private") #t))) (guard (e (#t #f)) - (def-var-with-meta! "clojure.core" "*in*" (let* ((_o$208 (keyword #f "buf")) (_o$209 (var-deref "clojure.core" "stdin-buf")) (_o$210 (keyword #f "fill-fn")) (_o$211 (lambda () (let fnrec202 () (let* ((line (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") ))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") line)) #f (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "stdin-buf") (lambda (b) (let fnrec203 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") b line "\n")))) #t)))))) (_o$212 (keyword #f "read-line-fn")) (_o$213 (lambda () (let fnrec204 () (let* ((cur (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "stdin-buf")))) (if (jolt-pos? (jolt-count cur)) (let* ((i (jolt-invoke (var-deref "clojure.core" "str-find") "\n" cur))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") i)) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") "") cur) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") (jolt-invoke (var-deref "clojure.core" "subs") cur (jolt-inc i))) (jolt-invoke (var-deref "clojure.core" "subs") cur 0.0 i)))) (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") )))))) (_o$214 (keyword #f "read-fn")) (_o$215 (lambda () (let fnrec205 () (let* () (let loop206 () (let* ((r (jolt-invoke (var-deref "clojure.core" "__parse-next") (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "stdin-buf"))))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (let* ((line (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") ))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") line)) (var-deref "clojure.core" "reader-eof") (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "stdin-buf") (lambda (b) (let fnrec207 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") b line "\n")))) (loop206 )))) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") (jolt-nth r 1.0)) (jolt-nth r 0.0)))))))))) (jolt-hash-map _o$208 _o$209 _o$210 _o$211 _o$212 _o$213 _o$214 _o$215)) (jolt-hash-map (keyword #f "dynamic") #t))) + (def-var-with-meta! "clojure.core" "*in*" (let* ((_o$208 (keyword #f "buf")) (_o$209 (var-deref "clojure.core" "stdin-buf")) (_o$210 (keyword #f "fill-fn")) (_o$211 (lambda () (let fnrec202 () (let* ((line (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") ))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") line)) #f (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "stdin-buf") (lambda (b) (let fnrec203 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") b line "\n")))) #t)))))) (_o$212 (keyword #f "read-line-fn")) (_o$213 (lambda () (let fnrec204 () (let* ((cur (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "stdin-buf")))) (if (jolt-pos? (jolt-count cur)) (let* ((i (jolt-invoke (var-deref "clojure.core" "str-find") "\n" cur))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") i)) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") "") cur) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") (jolt-invoke (var-deref "clojure.core" "subs") cur (jolt-inc i))) (jolt-invoke (var-deref "clojure.core" "subs") cur 0 i)))) (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") )))))) (_o$214 (keyword #f "read-fn")) (_o$215 (lambda () (let fnrec205 () (let* () (let loop206 () (let* ((r (jolt-invoke (var-deref "clojure.core" "__parse-next") (jolt-invoke (var-deref "clojure.core" "deref") (var-deref "clojure.core" "stdin-buf"))))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (let* ((line (jolt-invoke (var-deref "clojure.core" "__stdin-read-line") ))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") line)) (var-deref "clojure.core" "reader-eof") (begin (jolt-invoke (var-deref "clojure.core" "swap!") (var-deref "clojure.core" "stdin-buf") (lambda (b) (let fnrec207 ((b b)) (jolt-invoke (var-deref "clojure.core" "str") b line "\n")))) (loop206 )))) (begin (jolt-invoke (var-deref "clojure.core" "reset!") (var-deref "clojure.core" "stdin-buf") (jolt-nth r 1)) (jolt-nth r 0)))))))))) (jolt-hash-map _o$208 _o$209 _o$210 _o$211 _o$212 _o$213 _o$214 _o$215)) (jolt-hash-map (keyword #f "dynamic") #t))) (guard (e (#t #f)) (def-var! "clojure.core" "read-line" (letrec ((read-line (lambda () (let fnrec216 () (jolt-invoke (jolt-get (var-deref "clojure.core" "*in*") (keyword #f "read-line-fn")) ))))) read-line))) (guard (e (#t #f)) @@ -965,7 +965,7 @@ (lambda (s . body) (let fnrec220 ((s s) (body (list->cseq body))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "binding")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqvec") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "*in*")) (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol "clojure.core" "__string-reader")) (jolt-invoke (var-deref "clojure.core" "__sq1") s))))) body)))) (mark-macro! "clojure.core" "with-in-str")) (guard (e (#t #f)) - (def-var! "clojure.core" "read+string" (letrec ((read+string (case-lambda (() (let fnrec221 () (jolt-invoke read+string (var-deref "clojure.core" "*in*")))) ((stream) (let fnrec222 ((stream stream)) (jolt-invoke read+string stream #t jolt-nil))) ((stream eof-error? eof-value) (let fnrec223 ((stream stream) (eof-error? eof-error?) (eof-value eof-value)) (let* ((buf (jolt-get stream (keyword #f "buf"))) (fill (jolt-get stream (keyword #f "fill-fn")))) (let* () (let loop224 () (let* ((s (jolt-invoke (var-deref "clojure.core" "deref") buf)) (r (jolt-invoke (var-deref "clojure.core" "__parse-next") s))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (if (jolt-truthy? (let* ((and__13__auto fill)) (if (jolt-truthy? and__13__auto) (jolt-invoke fill ) and__13__auto))) (loop224 ) (if (jolt-truthy? eof-error?) (jolt-throw (jolt-ex-info "EOF while reading" (jolt-hash-map))) (let* ((_o$227 eof-value) (_o$228 "")) (jolt-vector _o$227 _o$228)))) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-nth r 1.0)) (let* ((_o$225 (jolt-nth r 0.0)) (_o$226 (jolt-invoke (var-deref "clojure.core" "subs") s 0.0 (- (jolt-count s) (jolt-count (jolt-nth r 1.0)))))) (jolt-vector _o$225 _o$226))))))))))))) read+string))) + (def-var! "clojure.core" "read+string" (letrec ((read+string (case-lambda (() (let fnrec221 () (jolt-invoke read+string (var-deref "clojure.core" "*in*")))) ((stream) (let fnrec222 ((stream stream)) (jolt-invoke read+string stream #t jolt-nil))) ((stream eof-error? eof-value) (let fnrec223 ((stream stream) (eof-error? eof-error?) (eof-value eof-value)) (let* ((buf (jolt-get stream (keyword #f "buf"))) (fill (jolt-get stream (keyword #f "fill-fn")))) (let* () (let loop224 () (let* ((s (jolt-invoke (var-deref "clojure.core" "deref") buf)) (r (jolt-invoke (var-deref "clojure.core" "__parse-next") s))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") r)) (if (jolt-truthy? (let* ((and__13__auto fill)) (if (jolt-truthy? and__13__auto) (jolt-invoke fill ) and__13__auto))) (loop224 ) (if (jolt-truthy? eof-error?) (jolt-throw (jolt-ex-info "EOF while reading" (jolt-hash-map))) (let* ((_o$227 eof-value) (_o$228 "")) (jolt-vector _o$227 _o$228)))) (begin (jolt-invoke (var-deref "clojure.core" "reset!") buf (jolt-nth r 1)) (let* ((_o$225 (jolt-nth r 0)) (_o$226 (jolt-invoke (var-deref "clojure.core" "subs") s 0 (- (jolt-count s) (jolt-count (jolt-nth r 1)))))) (jolt-vector _o$225 _o$226))))))))))))) read+string))) (guard (e (#t #f)) (def-var! "clojure.core" "line-seq" (letrec ((line-seq (lambda (rdr) (let fnrec229 ((rdr rdr)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") rdr)) (jolt-seq (jolt-invoke (var-deref "clojure.core" "str-split") "\n" rdr)) (jolt-invoke (var-deref "clojure.core" "make-lazy-seq") (lambda () (let fnrec230 () (jolt-invoke (var-deref "clojure.core" "coll->cells") (let* ((line (jolt-invoke (jolt-get rdr (keyword #f "read-line-fn")) ))) (if (jolt-truthy? line) (jolt-cons line (jolt-invoke line-seq rdr)) jolt-nil))))))))))) line-seq))) (guard (e (#t #f)) @@ -993,9 +993,9 @@ (guard (e (#t #f)) (def-var! "clojure.core" "agent-error" (letrec ((agent-error (lambda (_a) (let fnrec242 ((_a _a)) jolt-nil)))) agent-error))) (guard (e (#t #f)) - (def-var! "clojure.string" "blank?" (letrec ((blank? (lambda (s) (let fnrec61 ((s s)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") s)) #t (jolt= 0.0 (jolt-count (jolt-invoke (var-deref "clojure.core" "str-trim") s)))))))) blank?))) + (def-var! "clojure.string" "blank?" (letrec ((blank? (lambda (s) (let fnrec61 ((s s)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "nil?") s)) #t (jolt= 0 (jolt-count (jolt-invoke (var-deref "clojure.core" "str-trim") s)))))))) blank?))) (guard (e (#t #f)) - (def-var! "clojure.string" "capitalize" (letrec ((capitalize (lambda (s) (let fnrec62 ((s s)) (if (< 1.0 (jolt-count s)) (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "str-upper") (jolt-invoke (var-deref "clojure.core" "subs") s 0.0 1.0)) (jolt-invoke (var-deref "clojure.core" "str-lower") (jolt-invoke (var-deref "clojure.core" "subs") s 1.0))) (jolt-invoke (var-deref "clojure.core" "str-upper") s)))))) capitalize))) + (def-var! "clojure.string" "capitalize" (letrec ((capitalize (lambda (s) (let fnrec62 ((s s)) (if (< 1 (jolt-count s)) (jolt-invoke (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "str-upper") (jolt-invoke (var-deref "clojure.core" "subs") s 0 1)) (jolt-invoke (var-deref "clojure.core" "str-lower") (jolt-invoke (var-deref "clojure.core" "subs") s 1))) (jolt-invoke (var-deref "clojure.core" "str-upper") s)))))) capitalize))) (guard (e (#t #f)) (def-var! "clojure.string" "lower-case" (letrec ((lower-case (lambda (s) (let fnrec63 ((s s)) (jolt-invoke (var-deref "clojure.core" "str-lower") s))))) lower-case))) (guard (e (#t #f)) @@ -1013,11 +1013,11 @@ (guard (e (#t #f)) (def-var! "clojure.string" "str-reverse" (letrec ((str-reverse (lambda (s) (let fnrec71 ((s s)) (jolt-invoke (var-deref "clojure.core" "str-reverse-b") s))))) str-reverse))) (guard (e (#t #f)) - (def-var! "clojure.string" "split" (letrec ((split (case-lambda ((s re) (let fnrec72 ((s s) (re re)) (jolt-invoke split s re 0.0))) ((s re limit) (let fnrec73 ((s s) (re re) (limit limit)) (let* ((parts (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "str-split") re s (if (jolt-pos? limit) limit jolt-nil))))) (if (jolt-truthy? (let* ((and__13__auto (jolt-zero? limit))) (if (jolt-truthy? and__13__auto) (> (jolt-count parts) 1.0) and__13__auto))) (let* ((v parts)) (let loop74 ((v v)) (if (jolt-truthy? (let* ((and__13__auto (jolt-seq v))) (if (jolt-truthy? and__13__auto) (jolt= "" (jolt-peek v)) and__13__auto))) (loop74 (jolt-pop v)) v))) parts))))))) split))) + (def-var! "clojure.string" "split" (letrec ((split (case-lambda ((s re) (let fnrec72 ((s s) (re re)) (jolt-invoke split s re 0))) ((s re limit) (let fnrec73 ((s s) (re re) (limit limit)) (let* ((parts (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "str-split") re s (if (jolt-pos? limit) limit jolt-nil))))) (if (jolt-truthy? (let* ((and__13__auto (jolt-zero? limit))) (if (jolt-truthy? and__13__auto) (> (jolt-count parts) 1) and__13__auto))) (let* ((v parts)) (let loop74 ((v v)) (if (jolt-truthy? (let* ((and__13__auto (jolt-seq v))) (if (jolt-truthy? and__13__auto) (jolt= "" (jolt-peek v)) and__13__auto))) (loop74 (jolt-pop v)) v))) parts))))))) split))) (guard (e (#t #f)) (def-var! "clojure.string" "split-lines" (letrec ((split-lines (lambda (s) (let fnrec75 ((s s)) (jolt-invoke (var-deref "clojure.core" "vec") (jolt-invoke (var-deref "clojure.core" "str-split") (jolt-regex "\\r?\\n") s)))))) split-lines))) (guard (e (#t #f)) - (def-var! "clojure.string" "starts-with?" (letrec ((starts-with? (lambda (s substr) (let fnrec76 ((s s) (substr substr)) (let* ((slen (jolt-count s)) (slen2 (jolt-count substr))) (let* ((and__13__auto (>= slen slen2))) (if (jolt-truthy? and__13__auto) (jolt= (jolt-invoke (var-deref "clojure.core" "subs") s 0.0 slen2) substr) and__13__auto))))))) starts-with?))) + (def-var! "clojure.string" "starts-with?" (letrec ((starts-with? (lambda (s substr) (let fnrec76 ((s s) (substr substr)) (let* ((slen (jolt-count s)) (slen2 (jolt-count substr))) (let* ((and__13__auto (>= slen slen2))) (if (jolt-truthy? and__13__auto) (jolt= (jolt-invoke (var-deref "clojure.core" "subs") s 0 slen2) substr) and__13__auto))))))) starts-with?))) (guard (e (#t #f)) (def-var! "clojure.string" "ends-with?" (letrec ((ends-with? (lambda (s substr) (let fnrec77 ((s s) (substr substr)) (let* ((slen (jolt-count s)) (slen2 (jolt-count substr))) (let* ((and__13__auto (>= slen slen2))) (if (jolt-truthy? and__13__auto) (jolt= (jolt-invoke (var-deref "clojure.core" "subs") s (- slen slen2)) substr) and__13__auto))))))) ends-with?))) (guard (e (#t #f)) @@ -1031,11 +1031,11 @@ (guard (e (#t #f)) (def-var! "clojure.string" "index-of" (letrec ((index-of (case-lambda ((s value) (let fnrec83 ((s s) (value value)) (jolt-invoke (var-deref "clojure.core" "str-find") value s))) ((s value from) (let fnrec84 ((s s) (value value) (from from)) (let* ((idx (jolt-invoke (var-deref "clojure.core" "str-find") value (jolt-invoke (var-deref "clojure.core" "subs") s from)))) (if (jolt-truthy? idx) (+ from idx) jolt-nil))))))) index-of))) (guard (e (#t #f)) - (def-var! "clojure.string" "last-index-of" (letrec ((last-index-of (case-lambda ((s value) (let fnrec85 ((s s) (value value)) (let* ((r (jolt-invoke (var-deref "clojure.core" "str-reverse-b") s)) (sval (jolt-invoke (var-deref "clojure.core" "str-reverse-b") value)) (idx (jolt-invoke (var-deref "clojure.core" "str-find") sval r))) (if (jolt-truthy? idx) (- (jolt-count s) (+ idx (jolt-count value))) jolt-nil)))) ((s value from) (let fnrec86 ((s s) (value value) (from from)) (let* ((sub (jolt-invoke (var-deref "clojure.core" "subs") s 0.0 from)) (r (jolt-invoke (var-deref "clojure.core" "str-reverse-b") sub)) (sval (jolt-invoke (var-deref "clojure.core" "str-reverse-b") value)) (idx (jolt-invoke (var-deref "clojure.core" "str-find") sval r))) (if (jolt-truthy? idx) (- from (+ idx (jolt-count value))) jolt-nil))))))) last-index-of))) + (def-var! "clojure.string" "last-index-of" (letrec ((last-index-of (case-lambda ((s value) (let fnrec85 ((s s) (value value)) (let* ((r (jolt-invoke (var-deref "clojure.core" "str-reverse-b") s)) (sval (jolt-invoke (var-deref "clojure.core" "str-reverse-b") value)) (idx (jolt-invoke (var-deref "clojure.core" "str-find") sval r))) (if (jolt-truthy? idx) (- (jolt-count s) (+ idx (jolt-count value))) jolt-nil)))) ((s value from) (let fnrec86 ((s s) (value value) (from from)) (let* ((sub (jolt-invoke (var-deref "clojure.core" "subs") s 0 from)) (r (jolt-invoke (var-deref "clojure.core" "str-reverse-b") sub)) (sval (jolt-invoke (var-deref "clojure.core" "str-reverse-b") value)) (idx (jolt-invoke (var-deref "clojure.core" "str-find") sval r))) (if (jolt-truthy? idx) (- from (+ idx (jolt-count value))) jolt-nil))))))) last-index-of))) (guard (e (#t #f)) (def-var! "clojure.string" "re-quote-replacement" (letrec ((re-quote-replacement (lambda (replacement) (let fnrec87 ((replacement replacement)) (jolt-apply (var-deref "clojure.core" "str") (jolt-map (lambda (ch) (let fnrec88 ((ch ch)) (let* ((c (jolt-invoke (var-deref "clojure.core" "str") ch))) (if (jolt-truthy? (let* ((or__14__auto (jolt= c "\\"))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= c "$")))) (jolt-invoke (var-deref "clojure.core" "str") "\\" c) c)))) (jolt-seq replacement))))))) re-quote-replacement))) (guard (e (#t #f)) - (def-var! "clojure.string" "trim-newline" (letrec ((trim-newline (lambda (s) (let fnrec89 ((s s)) (let* ((index (jolt-count s))) (let loop90 ((index index)) (if (jolt-zero? index) "" (let* ((c (jolt-invoke (var-deref "clojure.core" "subs") s (jolt-dec index) index))) (if (jolt-truthy? (let* ((or__14__auto (jolt= c "\n"))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= c "\r")))) (loop90 (jolt-dec index)) (jolt-invoke (var-deref "clojure.core" "subs") s 0.0 index)))))))))) trim-newline))) + (def-var! "clojure.string" "trim-newline" (letrec ((trim-newline (lambda (s) (let fnrec89 ((s s)) (let* ((index (jolt-count s))) (let loop90 ((index index)) (if (jolt-zero? index) "" (let* ((c (jolt-invoke (var-deref "clojure.core" "subs") s (jolt-dec index) index))) (if (jolt-truthy? (let* ((or__14__auto (jolt= c "\n"))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt= c "\r")))) (loop90 (jolt-dec index)) (jolt-invoke (var-deref "clojure.core" "subs") s 0 index)))))))))) trim-newline))) (guard (e (#t #f)) (def-var! "clojure.walk" "walk" (letrec ((walk (lambda (inner outer form) (let fnrec91 ((inner inner) (outer outer) (form form)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") form)) (jolt-invoke outer (jolt-invoke (var-deref "clojure.core" "vec") (jolt-map inner form))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") form)) (jolt-invoke outer (jolt-into (jolt-invoke (var-deref "clojure.core" "empty") form) (jolt-map inner form))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "list?") form)) (jolt-invoke outer (jolt-apply jolt-list (jolt-map inner form))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") form)) (jolt-invoke outer (jolt-map inner form)) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke outer form) jolt-nil))))))))) walk))) (guard (e (#t #f)) @@ -1051,9 +1051,9 @@ (guard (e (#t #f)) (def-var! "clojure.walk" "prewalk-replace" (letrec ((prewalk-replace (lambda (smap form) (let fnrec100 ((smap smap) (form form)) (jolt-invoke (var-deref "clojure.walk" "prewalk") (lambda (x) (let fnrec101 ((x x)) (if (jolt-contains? smap x) (jolt-get smap x) x))) form))))) prewalk-replace))) (guard (e (#t #f)) - (def-var! "clojure.walk" "keywordize-keys" (letrec ((keywordize-keys (lambda (m) (let fnrec102 ((m m)) (let* ((f (lambda (G__9) (let fnrec104 ((G__9 G__9)) (let* ((G__10 G__9) (k (jolt-nth G__10 0.0 jolt-nil)) (v (jolt-nth G__10 1.0 jolt-nil))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") k)) (let* ((_o$107 (jolt-invoke (var-deref "clojure.core" "keyword") k)) (_o$108 v)) (jolt-vector _o$107 _o$108)) (let* ((_o$105 k) (_o$106 v)) (jolt-vector _o$105 _o$106)))))))) (jolt-invoke (var-deref "clojure.walk" "postwalk") (lambda (x) (let fnrec103 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map f x)) x))) m)))))) keywordize-keys))) + (def-var! "clojure.walk" "keywordize-keys" (letrec ((keywordize-keys (lambda (m) (let fnrec102 ((m m)) (let* ((f (lambda (G__9) (let fnrec104 ((G__9 G__9)) (let* ((G__10 G__9) (k (jolt-nth G__10 0 jolt-nil)) (v (jolt-nth G__10 1 jolt-nil))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "string?") k)) (let* ((_o$107 (jolt-invoke (var-deref "clojure.core" "keyword") k)) (_o$108 v)) (jolt-vector _o$107 _o$108)) (let* ((_o$105 k) (_o$106 v)) (jolt-vector _o$105 _o$106)))))))) (jolt-invoke (var-deref "clojure.walk" "postwalk") (lambda (x) (let fnrec103 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map f x)) x))) m)))))) keywordize-keys))) (guard (e (#t #f)) - (def-var! "clojure.walk" "stringify-keys" (letrec ((stringify-keys (lambda (m) (let fnrec109 ((m m)) (let* ((f (lambda (G__11) (let fnrec111 ((G__11 G__11)) (let* ((G__12 G__11) (k (jolt-nth G__12 0.0 jolt-nil)) (v (jolt-nth G__12 1.0 jolt-nil))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") k)) (let* ((_o$114 (jolt-invoke (var-deref "clojure.core" "name") k)) (_o$115 v)) (jolt-vector _o$114 _o$115)) (let* ((_o$112 k) (_o$113 v)) (jolt-vector _o$112 _o$113)))))))) (jolt-invoke (var-deref "clojure.walk" "postwalk") (lambda (x) (let fnrec110 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map f x)) x))) m)))))) stringify-keys))) + (def-var! "clojure.walk" "stringify-keys" (letrec ((stringify-keys (lambda (m) (let fnrec109 ((m m)) (let* ((f (lambda (G__11) (let fnrec111 ((G__11 G__11)) (let* ((G__12 G__11) (k (jolt-nth G__12 0 jolt-nil)) (v (jolt-nth G__12 1 jolt-nil))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "keyword?") k)) (let* ((_o$114 (jolt-invoke (var-deref "clojure.core" "name") k)) (_o$115 v)) (jolt-vector _o$114 _o$115)) (let* ((_o$112 k) (_o$113 v)) (jolt-vector _o$112 _o$113)))))))) (jolt-invoke (var-deref "clojure.walk" "postwalk") (lambda (x) (let fnrec110 ((x x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map f x)) x))) m)))))) stringify-keys))) (guard (e (#t #f)) (def-var! "clojure.template" "apply-template" (letrec ((apply-template (lambda (argv expr values) (let fnrec44 ((argv argv) (expr expr) (values values)) (begin (if (jolt-not (jolt-invoke (var-deref "clojure.core" "vector?") argv)) (jolt-throw (jolt-ex-info "Assert failed: (vector? argv)" (jolt-hash-map))) jolt-nil) (if (jolt-not (jolt-invoke (var-deref "clojure.core" "every?") (var-deref "clojure.core" "symbol?") argv)) (jolt-throw (jolt-ex-info "Assert failed: (every? symbol? argv)" (jolt-hash-map))) jolt-nil) (jolt-invoke (var-deref "clojure.walk" "postwalk-replace") (jolt-invoke (var-deref "clojure.core" "zipmap") argv values) expr)))))) apply-template))) (guard (e (#t #f)) @@ -1061,13 +1061,13 @@ (lambda (argv expr . values) (let fnrec45 ((argv argv) (expr expr) (values (list->cseq values))) (let* ((c (jolt-count argv))) (jolt-invoke (var-deref "clojure.core" "__sqcat") (jolt-invoke (var-deref "clojure.core" "__sq1") (jolt-symbol #f "do")) (jolt-map (lambda (a) (let fnrec46 ((a a)) (jolt-invoke (var-deref "clojure.template" "apply-template") argv expr a))) (jolt-invoke (var-deref "clojure.core" "partition") c values))))))) (mark-macro! "clojure.template" "do-template")) (guard (e (#t #f)) - (def-var! "clojure.edn" "edn->value" (letrec ((edn->value (lambda (opts x) (let fnrec47 ((opts opts) (x x)) (if (jolt= (keyword "jolt" "set") (jolt-get x (keyword "jolt" "type"))) (jolt-invoke (var-deref "clojure.core" "set") (jolt-map (lambda (v) (let fnrec53 ((v v)) (jolt-invoke edn->value opts v))) (jolt-get x (keyword #f "value")))) (if (jolt= (keyword "jolt" "tagged") (jolt-get x (keyword "jolt" "type"))) (let* ((tag (jolt-get x (keyword #f "tag"))) (v (jolt-invoke edn->value opts (jolt-get x (keyword #f "form")))) (tag-sym (let* ((n (jolt-invoke (var-deref "clojure.core" "name") tag))) (jolt-invoke (var-deref "clojure.core" "symbol") (if (jolt= "#" (jolt-invoke (var-deref "clojure.core" "subs") n 0.0 1.0)) (jolt-invoke (var-deref "clojure.core" "subs") n 1.0) n)))) (custom (jolt-get (jolt-get opts (keyword #f "readers")) tag-sym))) (if (jolt-truthy? custom) (jolt-invoke custom v) (if (jolt-truthy? (jolt-get opts (keyword #f "default"))) (jolt-invoke (jolt-get opts (keyword #f "default")) tag v) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__read-tagged") tag v) jolt-nil)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map (lambda (e) (let fnrec50 ((e e)) (let* ((_o$51 (jolt-invoke edn->value opts (jolt-invoke (var-deref "clojure.core" "key") e))) (_o$52 (jolt-invoke edn->value opts (jolt-invoke (var-deref "clojure.core" "val") e)))) (jolt-vector _o$51 _o$52)))) x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") x)) (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (v) (let fnrec49 ((v v)) (jolt-invoke edn->value opts v))) x) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") x)) (jolt-map (lambda (v) (let fnrec48 ((v v)) (jolt-invoke edn->value opts v))) x) (if (jolt-truthy? (keyword #f "else")) x jolt-nil)))))))))) edn->value))) + (def-var! "clojure.edn" "edn->value" (letrec ((edn->value (lambda (opts x) (let fnrec47 ((opts opts) (x x)) (if (jolt= (keyword "jolt" "set") (jolt-get x (keyword "jolt" "type"))) (jolt-invoke (var-deref "clojure.core" "set") (jolt-map (lambda (v) (let fnrec53 ((v v)) (jolt-invoke edn->value opts v))) (jolt-get x (keyword #f "value")))) (if (jolt= (keyword "jolt" "tagged") (jolt-get x (keyword "jolt" "type"))) (let* ((tag (jolt-get x (keyword #f "tag"))) (v (jolt-invoke edn->value opts (jolt-get x (keyword #f "form")))) (tag-sym (let* ((n (jolt-invoke (var-deref "clojure.core" "name") tag))) (jolt-invoke (var-deref "clojure.core" "symbol") (if (jolt= "#" (jolt-invoke (var-deref "clojure.core" "subs") n 0 1)) (jolt-invoke (var-deref "clojure.core" "subs") n 1) n)))) (custom (jolt-get (jolt-get opts (keyword #f "readers")) tag-sym))) (if (jolt-truthy? custom) (jolt-invoke custom v) (if (jolt-truthy? (jolt-get opts (keyword #f "default"))) (jolt-invoke (jolt-get opts (keyword #f "default")) tag v) (if (jolt-truthy? (keyword #f "else")) (jolt-invoke (var-deref "clojure.core" "__read-tagged") tag v) jolt-nil)))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "map?") x)) (jolt-into (jolt-hash-map) (jolt-map (lambda (e) (let fnrec50 ((e e)) (let* ((_o$51 (jolt-invoke edn->value opts (jolt-invoke (var-deref "clojure.core" "key") e))) (_o$52 (jolt-invoke edn->value opts (jolt-invoke (var-deref "clojure.core" "val") e)))) (jolt-vector _o$51 _o$52)))) x)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "vector?") x)) (jolt-invoke (var-deref "clojure.core" "mapv") (lambda (v) (let fnrec49 ((v v)) (jolt-invoke edn->value opts v))) x) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "seq?") x)) (jolt-map (lambda (v) (let fnrec48 ((v v)) (jolt-invoke edn->value opts v))) x) (if (jolt-truthy? (keyword #f "else")) x jolt-nil)))))))))) edn->value))) (guard (e (#t #f)) (def-var! "clojure.edn" "read-edn" (letrec ((read-edn (lambda (opts s) (let fnrec54 ((opts opts) (s s)) (if (jolt-truthy? (let* ((or__14__auto (jolt-invoke (var-deref "clojure.core" "nil?") s))) (if (jolt-truthy? or__14__auto) or__14__auto (jolt-invoke (var-deref "clojure.string" "blank?") s)))) (jolt-get opts (keyword #f "eof") jolt-nil) (jolt-invoke (var-deref "clojure.edn" "edn->value") opts (jolt-invoke (var-deref "clojure.core" "read-string") s))))))) read-edn))) (guard (e (#t #f)) (def-var! "clojure.edn" "read-string" (letrec ((read-string (case-lambda ((s) (let fnrec55 ((s s)) (jolt-invoke (var-deref "clojure.edn" "read-edn") (jolt-hash-map) s))) ((opts s) (let fnrec56 ((opts opts) (s s)) (jolt-invoke (var-deref "clojure.edn" "read-edn") opts s)))))) read-string))) (guard (e (#t #f)) - (def-var! "clojure.edn" "drain-reader" (letrec ((drain-reader (lambda (reader) (let fnrec57 ((reader reader)) (if (jolt= (keyword "core" "file") (host-static-call "janet" "type" reader)) (host-static-call "janet.file" "read" reader (keyword #f "all")) (let* ((acc (jolt-invoke (var-deref "clojure.core" "transient") (jolt-vector))) (c (record-method-dispatch reader "read" (jolt-vector)))) (let loop58 ((acc acc) (c c)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "==") -1.0 c)) (jolt-apply (var-deref "clojure.core" "str") (jolt-map (var-deref "clojure.core" "char") (jolt-invoke (var-deref "clojure.core" "persistent!") acc))) (loop58 (jolt-invoke (var-deref "clojure.core" "conj!") acc c) (record-method-dispatch reader "read" (jolt-vector))))))))))) drain-reader))) + (def-var! "clojure.edn" "drain-reader" (letrec ((drain-reader (lambda (reader) (let fnrec57 ((reader reader)) (if (jolt= (keyword "core" "file") (host-static-call "janet" "type" reader)) (host-static-call "janet.file" "read" reader (keyword #f "all")) (let* ((acc (jolt-invoke (var-deref "clojure.core" "transient") (jolt-vector))) (c (record-method-dispatch reader "read" (jolt-vector)))) (let loop58 ((acc acc) (c c)) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "==") -1 c)) (jolt-apply (var-deref "clojure.core" "str") (jolt-map (var-deref "clojure.core" "char") (jolt-invoke (var-deref "clojure.core" "persistent!") acc))) (loop58 (jolt-invoke (var-deref "clojure.core" "conj!") acc c) (record-method-dispatch reader "read" (jolt-vector))))))))))) drain-reader))) (guard (e (#t #f)) (def-var! "clojure.edn" "read" (letrec ((read (case-lambda ((reader) (let fnrec59 ((reader reader)) (jolt-invoke read (jolt-hash-map) reader))) ((opts reader) (let fnrec60 ((opts opts) (reader reader)) (jolt-invoke (var-deref "clojure.edn" "read-edn") opts (jolt-invoke (var-deref "clojure.edn" "drain-reader") reader))))))) read))) (guard (e (#t #f)) @@ -1081,15 +1081,15 @@ (guard (e (#t #f)) (def-var! "clojure.set" "project" (letrec ((project (lambda (xrel ks) (let fnrec10 ((xrel xrel) (ks ks)) (jolt-invoke (var-deref "clojure.core" "set") (jolt-map (lambda (p__1_) (let fnrec11 ((p__1_ p__1_)) (jolt-invoke (var-deref "clojure.core" "select-keys") p__1_ ks))) xrel)))))) project))) (guard (e (#t #f)) - (def-var! "clojure.set" "rename-keys" (letrec ((rename-keys (lambda (map kmap) (let fnrec12 ((map map) (kmap kmap)) (jolt-reduce (lambda (m G__1) (let fnrec13 ((m m) (G__1 G__1)) (let* ((G__2 G__1) (old (jolt-nth G__2 0.0 jolt-nil)) (new (jolt-nth G__2 1.0 jolt-nil))) (if (jolt-contains? map old) (jolt-assoc m new (jolt-get map old)) m)))) (jolt-apply jolt-dissoc map (jolt-keys kmap)) kmap))))) rename-keys))) + (def-var! "clojure.set" "rename-keys" (letrec ((rename-keys (lambda (map kmap) (let fnrec12 ((map map) (kmap kmap)) (jolt-reduce (lambda (m G__1) (let fnrec13 ((m m) (G__1 G__1)) (let* ((G__2 G__1) (old (jolt-nth G__2 0 jolt-nil)) (new (jolt-nth G__2 1 jolt-nil))) (if (jolt-contains? map old) (jolt-assoc m new (jolt-get map old)) m)))) (jolt-apply jolt-dissoc map (jolt-keys kmap)) kmap))))) rename-keys))) (guard (e (#t #f)) - (def-var! "clojure.set" "map-invert" (letrec ((map-invert (lambda (m) (let fnrec14 ((m m)) (jolt-reduce (lambda (acc G__3) (let fnrec15 ((acc acc) (G__3 G__3)) (let* ((G__4 G__3) (k (jolt-nth G__4 0.0 jolt-nil)) (v (jolt-nth G__4 1.0 jolt-nil))) (jolt-assoc acc v k)))) (jolt-hash-map) m))))) map-invert))) + (def-var! "clojure.set" "map-invert" (letrec ((map-invert (lambda (m) (let fnrec14 ((m m)) (jolt-reduce (lambda (acc G__3) (let fnrec15 ((acc acc) (G__3 G__3)) (let* ((G__4 G__3) (k (jolt-nth G__4 0 jolt-nil)) (v (jolt-nth G__4 1 jolt-nil))) (jolt-assoc acc v k)))) (jolt-hash-map) m))))) map-invert))) (guard (e (#t #f)) - (def-var! "clojure.set" "rename" (letrec ((rename (lambda (xrel kmap) (let fnrec16 ((xrel xrel) (kmap kmap)) (jolt-invoke (var-deref "clojure.core" "set") (jolt-map (lambda (m) (let fnrec17 ((m m)) (jolt-reduce (lambda (acc G__5) (let fnrec18 ((acc acc) (G__5 G__5)) (let* ((G__6 G__5) (old (jolt-nth G__6 0.0 jolt-nil)) (new (jolt-nth G__6 1.0 jolt-nil))) (if (jolt-contains? m old) (jolt-assoc acc new (jolt-get m old)) acc)))) (jolt-apply jolt-dissoc m (jolt-keys kmap)) kmap))) xrel)))))) rename))) + (def-var! "clojure.set" "rename" (letrec ((rename (lambda (xrel kmap) (let fnrec16 ((xrel xrel) (kmap kmap)) (jolt-invoke (var-deref "clojure.core" "set") (jolt-map (lambda (m) (let fnrec17 ((m m)) (jolt-reduce (lambda (acc G__5) (let fnrec18 ((acc acc) (G__5 G__5)) (let* ((G__6 G__5) (old (jolt-nth G__6 0 jolt-nil)) (new (jolt-nth G__6 1 jolt-nil))) (if (jolt-contains? m old) (jolt-assoc acc new (jolt-get m old)) acc)))) (jolt-apply jolt-dissoc m (jolt-keys kmap)) kmap))) xrel)))))) rename))) (guard (e (#t #f)) (def-var! "clojure.set" "index" (letrec ((index (lambda (xrel ks) (let fnrec19 ((xrel xrel) (ks ks)) (jolt-reduce (lambda (m x) (let fnrec20 ((m m) (x x)) (let* ((ik (jolt-invoke (var-deref "clojure.core" "select-keys") x ks))) (jolt-assoc m ik (jolt-conj (jolt-get m ik (jolt-hash-set)) x))))) (jolt-hash-map) xrel))))) index))) (guard (e (#t #f)) - (def-var! "clojure.set" "join" (letrec ((join (case-lambda ((xrel yrel) (let fnrec21 ((xrel xrel) (yrel yrel)) (if (jolt-truthy? (let* ((and__13__auto (jolt-seq xrel))) (if (jolt-truthy? and__13__auto) (jolt-seq yrel) and__13__auto))) (let* ((ks (jolt-invoke (var-deref "clojure.set" "intersection") (jolt-invoke (var-deref "clojure.core" "set") (jolt-keys (jolt-first xrel))) (jolt-invoke (var-deref "clojure.core" "set") (jolt-keys (jolt-first yrel))))) (G__7 (if (<= (jolt-count xrel) (jolt-count yrel)) (let* ((_o$26 xrel) (_o$27 yrel)) (jolt-vector _o$26 _o$27)) (let* ((_o$24 yrel) (_o$25 xrel)) (jolt-vector _o$24 _o$25)))) (r (jolt-nth G__7 0.0 jolt-nil)) (s (jolt-nth G__7 1.0 jolt-nil)) (idx (jolt-invoke (var-deref "clojure.set" "index") r ks))) (jolt-reduce (lambda (ret x) (let fnrec22 ((ret ret) (x x)) (let* ((found (jolt-invoke idx (jolt-invoke (var-deref "clojure.core" "select-keys") x ks)))) (if (jolt-truthy? found) (jolt-reduce (lambda (acc y) (let fnrec23 ((acc acc) (y y)) (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "merge") y x)))) ret found) ret)))) (jolt-hash-set) s)) (jolt-hash-set)))) ((xrel yrel km) (let fnrec28 ((xrel xrel) (yrel yrel) (km km)) (let* ((G__8 (if (<= (jolt-count xrel) (jolt-count yrel)) (let* ((_o$34 xrel) (_o$35 yrel) (_o$36 (jolt-invoke (var-deref "clojure.set" "map-invert") km))) (jolt-vector _o$34 _o$35 _o$36)) (let* ((_o$31 yrel) (_o$32 xrel) (_o$33 km)) (jolt-vector _o$31 _o$32 _o$33)))) (r (jolt-nth G__8 0.0 jolt-nil)) (s (jolt-nth G__8 1.0 jolt-nil)) (k (jolt-nth G__8 2.0 jolt-nil)) (idx (jolt-invoke (var-deref "clojure.set" "index") r (jolt-vals k)))) (jolt-reduce (lambda (ret x) (let fnrec29 ((ret ret) (x x)) (let* ((found (jolt-invoke idx (jolt-invoke (var-deref "clojure.set" "rename-keys") (jolt-invoke (var-deref "clojure.core" "select-keys") x (jolt-keys k)) k)))) (if (jolt-truthy? found) (jolt-reduce (lambda (acc y) (let fnrec30 ((acc acc) (y y)) (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "merge") y x)))) ret found) ret)))) (jolt-hash-set) s))))))) join))) + (def-var! "clojure.set" "join" (letrec ((join (case-lambda ((xrel yrel) (let fnrec21 ((xrel xrel) (yrel yrel)) (if (jolt-truthy? (let* ((and__13__auto (jolt-seq xrel))) (if (jolt-truthy? and__13__auto) (jolt-seq yrel) and__13__auto))) (let* ((ks (jolt-invoke (var-deref "clojure.set" "intersection") (jolt-invoke (var-deref "clojure.core" "set") (jolt-keys (jolt-first xrel))) (jolt-invoke (var-deref "clojure.core" "set") (jolt-keys (jolt-first yrel))))) (G__7 (if (<= (jolt-count xrel) (jolt-count yrel)) (let* ((_o$26 xrel) (_o$27 yrel)) (jolt-vector _o$26 _o$27)) (let* ((_o$24 yrel) (_o$25 xrel)) (jolt-vector _o$24 _o$25)))) (r (jolt-nth G__7 0 jolt-nil)) (s (jolt-nth G__7 1 jolt-nil)) (idx (jolt-invoke (var-deref "clojure.set" "index") r ks))) (jolt-reduce (lambda (ret x) (let fnrec22 ((ret ret) (x x)) (let* ((found (jolt-invoke idx (jolt-invoke (var-deref "clojure.core" "select-keys") x ks)))) (if (jolt-truthy? found) (jolt-reduce (lambda (acc y) (let fnrec23 ((acc acc) (y y)) (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "merge") y x)))) ret found) ret)))) (jolt-hash-set) s)) (jolt-hash-set)))) ((xrel yrel km) (let fnrec28 ((xrel xrel) (yrel yrel) (km km)) (let* ((G__8 (if (<= (jolt-count xrel) (jolt-count yrel)) (let* ((_o$34 xrel) (_o$35 yrel) (_o$36 (jolt-invoke (var-deref "clojure.set" "map-invert") km))) (jolt-vector _o$34 _o$35 _o$36)) (let* ((_o$31 yrel) (_o$32 xrel) (_o$33 km)) (jolt-vector _o$31 _o$32 _o$33)))) (r (jolt-nth G__8 0 jolt-nil)) (s (jolt-nth G__8 1 jolt-nil)) (k (jolt-nth G__8 2 jolt-nil)) (idx (jolt-invoke (var-deref "clojure.set" "index") r (jolt-vals k)))) (jolt-reduce (lambda (ret x) (let fnrec29 ((ret ret) (x x)) (let* ((found (jolt-invoke idx (jolt-invoke (var-deref "clojure.set" "rename-keys") (jolt-invoke (var-deref "clojure.core" "select-keys") x (jolt-keys k)) k)))) (if (jolt-truthy? found) (jolt-reduce (lambda (acc y) (let fnrec30 ((acc acc) (y y)) (jolt-conj acc (jolt-invoke (var-deref "clojure.core" "merge") y x)))) ret found) ret)))) (jolt-hash-set) s))))))) join))) (guard (e (#t #f)) (def-var! "clojure.set" "subset?" (letrec ((subset? (lambda (set1 set2) (let fnrec37 ((set1 set1) (set2 set2)) (let* ((and__13__auto (<= (jolt-count set1) (jolt-count set2)))) (if (jolt-truthy? and__13__auto) (jolt-invoke (var-deref "clojure.core" "every?") (lambda (p__2_) (let fnrec38 ((p__2_ p__2_)) (jolt-contains? set2 p__2_))) set1) and__13__auto)))))) subset?))) (guard (e (#t #f)) diff --git a/host/chez/seq.ss b/host/chez/seq.ss index bf109a4..6691746 100644 --- a/host/chez/seq.ss +++ b/host/chez/seq.ss @@ -113,14 +113,15 @@ ((fx=? i 0) (seq-first s)) (else (loop (jolt-seq (seq-more s)) (fx- i 1))))))) -;; value-position arithmetic: jolt models every number as a double, so the -;; higher-order forms ((reduce + []), (apply * xs)) must coerce — Scheme's (+)/(*) -;; identities are EXACT 0/1, which aren't jolt= to the double 0.0/1.0. The hot -;; path uses the inlined native ops, not these. -(define (jolt-add . xs) (exact->inexact (apply + xs))) -(define (jolt-sub . xs) (exact->inexact (apply - xs))) -(define (jolt-mul . xs) (exact->inexact (apply * xs))) -(define (jolt-div . xs) (exact->inexact (apply / xs))) +;; value-position arithmetic (the higher-order forms: (reduce + []), (apply * xs)). +;; Scheme's +/-/*// already implement the JVM-parity numeric tower: exact+exact -> +;; exact, exact/exact -> Ratio, any flonum -> flonum. Identities (+)=0 / (*)=1 are +;; exact, matching exact integer arithmetic. The hot path uses the inlined native +;; ops, not these. +(define (jolt-add . xs) (apply + xs)) +(define (jolt-sub . xs) (apply - xs)) +(define (jolt-mul . xs) (apply * xs)) +(define (jolt-div . xs) (apply / xs)) ;; ============================================================================ ;; IFn dispatch — the dynamic "value as fn" fallback. A callee that the emitter @@ -181,16 +182,18 @@ (define (jolt-into to from) (reduce-seq (lambda (acc x) (jolt-conj1 acc x)) to (jolt-seq from))) -(define (range-from n) (cseq-lazy n (lambda () (range-from (+ n 1.0))))) +(define (range-from n) (cseq-lazy n (lambda () (range-from (+ n 1))))) (define (range-bounded n end step) (if (if (> step 0.0) (< n end) (> n end)) (cseq-lazy n (lambda () (range-bounded (+ n step) end step))) jolt-nil)) +;; numeric tower (jolt-n6al): exact 0/1 defaults so (range 3) yields exact ints +;; (= JVM longs); flonum args still produce flonums (Scheme arithmetic preserves). (define jolt-range (case-lambda - (() (range-from 0.0)) - ((end) (range-bounded 0.0 end 1.0)) - ((start end) (range-bounded start end 1.0)) + (() (range-from 0)) + ((end) (range-bounded 0 end 1)) + ((start end) (range-bounded start end 1)) ((start end step) (range-bounded start end step)))) (define (jolt-take n coll) diff --git a/jolt-core/jolt/backend_scheme.clj b/jolt-core/jolt/backend_scheme.clj index 4cc2ad1..5750d02 100644 --- a/jolt-core/jolt/backend_scheme.clj +++ b/jolt-core/jolt/backend_scheme.clj @@ -133,16 +133,18 @@ (cond (nil? v) "jolt-nil" (boolean? v) (if v "#t" "#f") - ;; jolt models every number as a double. Emit flonums so arithmetic matches - ;; the Janet host and Chez doesn't fall into exploding exact rationals. - ;; ##Inf/##-Inf/##NaN -> Chez's flonum literals (Janet stringifies them as - ;; inf/-inf/nan, unbound symbols in Chez). + ;; Numeric tower (jolt-n6al): emit a literal Chez re-reads as the SAME number. + ;; Exact integers -> "42", exact ratios -> "1/2" (str renders both faithfully); + ;; a flonum must carry a decimal point/exponent or Chez reads it back as exact, + ;; so a whole flonum (str drops its .0) gets ".0" appended. ##Inf/##-Inf/##NaN + ;; -> Chez's flonum literals. (number? v) (cond (= v ##Inf) "+inf.0" (= v ##-Inf) "-inf.0" (not= v v) "+nan.0" - :else (let [s (str v)] - (if (or (str/includes? s ".") (str/includes? s "e")) s (str s ".0")))) + (float? v) (let [s (str v)] + (if (or (str/includes? s ".") (str/includes? s "e")) s (str s ".0"))) + :else (str v)) (string? v) (chez-str-lit v) ;; keyword literal -> (keyword ns name) (keyword? v) (if-let [kns (namespace v)] @@ -310,9 +312,9 @@ kind (ifn-kind fnode) default (if (> (count args) 1) (str " " (nth args 1)) "")] (cond - ;; zero-arg + / * : flonum identity to keep the all-double model. - (and nop (empty? args) (= nop "+")) "0.0" - (and nop (empty? args) (= nop "*")) "1.0" + ;; zero-arg + / * : exact integer identity (= JVM long: (+) -> 0, (*) -> 1). + (and nop (empty? args) (= nop "+")) "0" + (and nop (empty? args) (= nop "*")) "1" (and nop (= 1 (count args)) (cmp1-ops nop)) (str "(begin " (first args) " #t)") nop (str "(" nop " " (str/join " " args) ")") ;; (:k coll [default]) -> (jolt-get coll :k [default]) diff --git a/test/chez/_reader.janet b/test/chez/_reader.janet index 1be810c..fc86cb1 100644 --- a/test/chez/_reader.janet +++ b/test/chez/_reader.janet @@ -14,9 +14,12 @@ [# --- scalars + collections (value equality, order-independent) --- ["(= 42 (read-string \"42\"))" "true"] ["(= 42 (read-string \"0x2A\"))" "true"] - ["(= 0.5 (read-string \"1/2\"))" "true"] + # numeric tower (jolt-n6al): "1/2" reads as an exact Ratio (= JVM), so a + # category-aware = against the double 0.5 is false; assert numeric value (==), + # which holds in both the all-flonum and tower models. + ["(== 0.5 (read-string \"1/2\"))" "true"] ["(= -3.5 (read-string \"-3.5\"))" "true"] - ["(= 1000.0 (read-string \"1e3\"))" "true"] + ["(== 1000.0 (read-string \"1e3\"))" "true"] ["(= 1 (read-string \"1N\"))" "true"] ["(integer? (read-string \"7\"))" "true"] ["(= :foo (read-string \":foo\"))" "true"] diff --git a/test/chez/run-corpus-zero-janet.janet b/test/chez/run-corpus-zero-janet.janet index 082e25c..f87df96 100644 --- a/test/chez/run-corpus-zero-janet.janet +++ b/test/chez/run-corpus-zero-janet.janet @@ -110,7 +110,27 @@ # unquoted value forms eval in hash order, not source order — a minor ordering # gap (pmap has no insertion order; the reader's source-order table doesn't cover # syntax-quote-built maps). 1 case; the non-syntax-quote map-order cases pass. - "source order through syntax-quote" true}) + "source order through syntax-quote" true + # numeric tower (jolt-n6al): the zero-Janet path now carries the Chez numeric + # tower (exact ints / Ratio / double) = JVM parity, while the corpus :expected + # is the all-flonum Janet value (the Janet host has only doubles). So Chez gives + # the JVM value and the Janet-era corpus diverges — flipped to JVM at Phase 5 + # (jolt-ecz0), these stay allowlisted during the transition. Each verified + # Chez == reference JVM Clojure. + "divide to fraction" true # (/ 1 2) -> 1/2 (JVM Ratio), corpus 0.5 + "ratio 3/4" true # 3/4 literal -> Ratio + "neg ratio" true # -1/2 -> Ratio + "ratio -> double" true # ratio result, corpus double + "/ ratio-as-double" true + "native unary div" true # (/ 2) -> 1/2 + "double" true # (double 3) -> 3.0 (double != exact 3) + "doubles" true "floats" true + "unchecked-double" true "unchecked-float" true + "floor" true # clojure.math/floor -> 2.0 (JVM double) + "signum" true # clojure.math/signum -> -1.0 (JVM double) + "Math/sqrt" true # -> 3.0 (double) + "Math/pow" true # -> 8.0 (double) + "bigdec int M" true}) # 1M: no BigDecimal type on Chez (documented gap) # Cases that BLOCK forever on a shared-heap / JVM host (profile.edn :bucket # :timeout) — skip them, like :throws: a single hung case would stall the whole @@ -226,7 +246,12 @@ # date/time (Date/Timestamp/SimpleDateFormat/TimeZone) + clojure.edn/read over a # reader -> 2692; STM stub + portable line-seq -> 2696; realized? on a lazy-seq + # conj! 1-arity (transducer-completion identity) -> 2698. -(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_ZJ_FLOOR") "2698"))) +# numeric tower (jolt-n6al): 2698 -> 2682. ~16 numeric cases that the all-flonum +# model coincidentally passed (corpus :expected is the Janet double value) now give +# the JVM tower value (1/2, 3.0, ...) and are reclassified as known tower +# divergences (Chez == reference JVM). The floor rises back when the corpus flips +# to JVM values (jolt-ecz0, Phase 5). +(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_ZJ_FLOOR") "2682"))) (def floor (if (os/getenv "JOLT_CORPUS_LIMIT") 0 base-floor)) (when (or (> (length diverged) 0) (< pass floor)) (printf "REGRESSION: pass %d < floor %d or %d new divergence(s)" pass floor (length diverged)))