aboutsummaryrefslogtreecommitdiff
path: root/luxc/src
diff options
context:
space:
mode:
Diffstat (limited to 'luxc/src')
-rw-r--r--luxc/src/lux/analyser.clj6
-rw-r--r--luxc/src/lux/analyser/base.clj2
-rw-r--r--luxc/src/lux/analyser/case.clj30
-rw-r--r--luxc/src/lux/analyser/module.clj12
-rw-r--r--luxc/src/lux/analyser/parser.clj22
-rw-r--r--luxc/src/lux/analyser/proc/common.clj16
-rw-r--r--luxc/src/lux/analyser/proc/jvm.clj34
-rw-r--r--luxc/src/lux/base.clj14
-rw-r--r--luxc/src/lux/compiler/cache.clj14
-rw-r--r--luxc/src/lux/compiler/cache/ann.clj6
-rw-r--r--luxc/src/lux/compiler/jvm.clj4
-rw-r--r--luxc/src/lux/compiler/jvm/base.clj5
-rw-r--r--luxc/src/lux/compiler/jvm/case.clj2
-rw-r--r--luxc/src/lux/compiler/jvm/lux.clj4
-rw-r--r--luxc/src/lux/lexer.clj6
-rw-r--r--luxc/src/lux/optimizer.clj28
-rw-r--r--luxc/src/lux/parser.clj4
-rw-r--r--luxc/src/lux/type.clj8
-rw-r--r--luxc/src/lux/type/host.clj2
19 files changed, 112 insertions, 107 deletions
diff --git a/luxc/src/lux/analyser.clj b/luxc/src/lux/analyser.clj
index 9052e6f8f..6e2d8f7aa 100644
--- a/luxc/src/lux/analyser.clj
+++ b/luxc/src/lux/analyser.clj
@@ -65,9 +65,9 @@
macro-caller (aget compilers 2)]
(|case token
;; Standard special forms
- (&/$Bool ?value)
- (|do [_ (&type/check exo-type &type/Bool)]
- (return (&/|list (&&/|meta exo-type cursor (&&/$bool ?value)))))
+ (&/$Bit ?value)
+ (|do [_ (&type/check exo-type &type/Bit)]
+ (return (&/|list (&&/|meta exo-type cursor (&&/$bit ?value)))))
(&/$Nat ?value)
(|do [_ (&type/check exo-type &type/Nat)]
diff --git a/luxc/src/lux/analyser/base.clj b/luxc/src/lux/analyser/base.clj
index 25b73ba1a..7874b0bd2 100644
--- a/luxc/src/lux/analyser/base.clj
+++ b/luxc/src/lux/analyser/base.clj
@@ -6,7 +6,7 @@
;; [Tags]
(defvariant
- ("bool" 1)
+ ("bit" 1)
("nat" 1)
("int" 1)
("rev" 1)
diff --git a/luxc/src/lux/analyser/case.clj b/luxc/src/lux/analyser/case.clj
index 86752d336..73b4c8df2 100644
--- a/luxc/src/lux/analyser/case.clj
+++ b/luxc/src/lux/analyser/case.clj
@@ -12,7 +12,7 @@
;; [Tags]
(defvariant
("DefaultTotal" 1)
- ("BoolTotal" 2)
+ ("BitTotal" 2)
("NatTotal" 2)
("IntTotal" 2)
("RevTotal" 2)
@@ -24,7 +24,7 @@
(defvariant
("NoTestAC" 0)
("StoreTestAC" 1)
- ("BoolTestAC" 1)
+ ("BitTestAC" 1)
("NatTestAC" 1)
("IntTestAC" 1)
("RevTestAC" 1)
@@ -268,10 +268,10 @@
(&/$Symbol ident)
(&/fail-with-loc (str "[Pattern-matching Error] Symbols must be unqualified: " (&/ident->text ident)))
- (&/$Bool ?value)
- (|do [_ (&type/check value-type &type/Bool)
+ (&/$Bit ?value)
+ (|do [_ (&type/check value-type &type/Bit)
=kont kont]
- (return (&/T [($BoolTestAC ?value) =kont])))
+ (return (&/T [($BitTestAC ?value) =kont])))
(&/$Nat ?value)
(|do [_ (&type/check value-type &type/Nat)
@@ -405,8 +405,8 @@
[($DefaultTotal total?) ($NoTestAC)]
(return ($DefaultTotal true))
- [($BoolTotal total? ?values) ($NoTestAC)]
- (return ($BoolTotal true ?values))
+ [($BitTotal total? ?values) ($NoTestAC)]
+ (return ($BitTotal true ?values))
[($NatTotal total? ?values) ($NoTestAC)]
(return ($NatTotal true ?values))
@@ -432,8 +432,8 @@
[($DefaultTotal total?) ($StoreTestAC ?idx)]
(return ($DefaultTotal true))
- [($BoolTotal total? ?values) ($StoreTestAC ?idx)]
- (return ($BoolTotal true ?values))
+ [($BitTotal total? ?values) ($StoreTestAC ?idx)]
+ (return ($BitTotal true ?values))
[($NatTotal total? ?values) ($StoreTestAC ?idx)]
(return ($NatTotal true ?values))
@@ -456,11 +456,11 @@
[($VariantTotal total? ?values) ($StoreTestAC ?idx)]
(return ($VariantTotal true ?values))
- [($DefaultTotal total?) ($BoolTestAC ?value)]
- (return ($BoolTotal total? (&/|list ?value)))
+ [($DefaultTotal total?) ($BitTestAC ?value)]
+ (return ($BitTotal total? (&/|list ?value)))
- [($BoolTotal total? ?values) ($BoolTestAC ?value)]
- (return ($BoolTotal total? (&/$Cons ?value ?values)))
+ [($BitTotal total? ?values) ($BitTestAC ?value)]
+ (return ($BitTotal total? (&/$Cons ?value ?values)))
[($DefaultTotal total?) ($NatTestAC ?value)]
(return ($NatTotal total? (&/|list ?value)))
@@ -550,8 +550,8 @@
($DefaultTotal ?total)
(return ?total)
- ($BoolTotal ?total ?values)
- (|do [_ (&type/check value-type &type/Bool)]
+ ($BitTotal ?total ?values)
+ (|do [_ (&type/check value-type &type/Bit)]
(return (or ?total
(= #{true false} (set (&/->seq ?values))))))
diff --git a/luxc/src/lux/analyser/module.clj b/luxc/src/lux/analyser/module.clj
index 130004701..4174932ca 100644
--- a/luxc/src/lux/analyser/module.clj
+++ b/luxc/src/lux/analyser/module.clj
@@ -61,7 +61,7 @@
state)]
(&/$Right (&/T [state* &/unit-tag])))))
(defn <asker>
- "(-> Text (Lux Bool))"
+ "(-> Text (Lux Bit))"
[module-name]
(fn [state]
(if-let [=module (->> state (&/get$ &/$modules) (&/|get module-name))]
@@ -141,7 +141,7 @@
state))))
(defn type-def
- "(-> Text Text (Lux [Bool Type]))"
+ "(-> Text Text (Lux [Bit Type]))"
[module name]
(fn [state]
(if-let [$module (->> state (&/get$ &/$modules) (&/|get module))]
@@ -167,7 +167,7 @@
state))))
(defn exists?
- "(-> Text (Lux Bool))"
+ "(-> Text (Lux Bit))"
[name]
(fn [state]
(return* state
@@ -269,7 +269,7 @@
_
(return* state (&/T [(&/T [module name]) $def])))
(|case (&meta/meta-get &meta/export?-tag ?meta)
- (&/$Some [_ (&/$Bool true)])
+ (&/$Some [_ (&/$Bit true)])
(return* state (&/T [(&/T [module name]) $def]))
_
@@ -354,7 +354,7 @@
(return nil)))
(defn declare-tags
- "(-> Text (List Text) Bool Type (Lux Null))"
+ "(-> Text (List Text) Bit Type (Lux Null))"
[module tag-names was-exported? type]
(|do [_ (ensure-undeclared-tags module tag-names)
type-name (&type/type-name type)
@@ -437,7 +437,7 @@
(do-template [<name> <type> <tag> <desc>]
(defn <name> [module name meta type]
(|case (&meta/meta-get <tag> meta)
- (&/$Some [_ (&/$Bool true)])
+ (&/$Some [_ (&/$Bit true)])
(&/try-all% (&/|list (&type/check <type> type)
(&/fail-with-loc (str "[Analyser Error] Cannot tag as lux;" <desc> "? if it's not a " <desc> ": " (str module &/+name-separator+ name)))))
diff --git a/luxc/src/lux/analyser/parser.clj b/luxc/src/lux/analyser/parser.clj
index c5cd84eab..6a46bab3c 100644
--- a/luxc/src/lux/analyser/parser.clj
+++ b/luxc/src/lux/analyser/parser.clj
@@ -133,7 +133,7 @@
(def ^:private parse-ann-param
(|do [param-name parse-name
_ (&reader/read-text "=")
- param-value (&/try-all% (&/|list (|do [[_ (&lexer/$Bool param-value*)] &lexer/lex-bool]
+ param-value (&/try-all% (&/|list (|do [[_ (&lexer/$Bit param-value*)] &lexer/lex-bit]
(return (boolean param-value*)))
(|do [[_ (&lexer/$Int param-value*)] &lexer/lex-int]
@@ -243,8 +243,8 @@
(|do [_ (&reader/read-text "init")
=privacy-modifier (with-pre-space
parse-privacy-modifier)
- [_ (&lexer/$Bool =strict*)] (with-pre-space
- &lexer/lex-bool)
+ [_ (&lexer/$Bit =strict*)] (with-pre-space
+ &lexer/lex-bit)
:let [=strict (Boolean/parseBoolean =strict*)]
=anns (with-pre-space
(with-brackets
@@ -271,11 +271,11 @@
parse-name)
=privacy-modifier (with-pre-space
parse-privacy-modifier)
- [_ (&lexer/$Bool =final?*)] (with-pre-space
- &lexer/lex-bool)
+ [_ (&lexer/$Bit =final?*)] (with-pre-space
+ &lexer/lex-bit)
:let [=final? (Boolean/parseBoolean =final?*)]
- [_ (&lexer/$Bool =strict*)] (with-pre-space
- &lexer/lex-bool)
+ [_ (&lexer/$Bit =strict*)] (with-pre-space
+ &lexer/lex-bit)
:let [=strict (Boolean/parseBoolean =strict*)]
=anns (with-pre-space
(with-brackets
@@ -301,8 +301,8 @@
parse-gclass-decl)
=name (with-pre-space
parse-name)
- [_ (&lexer/$Bool =strict*)] (with-pre-space
- &lexer/lex-bool)
+ [_ (&lexer/$Bit =strict*)] (with-pre-space
+ &lexer/lex-bit)
:let [=strict (Boolean/parseBoolean =strict*)]
=anns (with-pre-space
(with-brackets
@@ -328,8 +328,8 @@
parse-name)
=privacy-modifier (with-pre-space
parse-privacy-modifier)
- [_ (&lexer/$Bool =strict*)] (with-pre-space
- &lexer/lex-bool)
+ [_ (&lexer/$Bit =strict*)] (with-pre-space
+ &lexer/lex-bit)
:let [=strict (Boolean/parseBoolean =strict*)]
=anns (with-pre-space
(with-brackets
diff --git a/luxc/src/lux/analyser/proc/common.clj b/luxc/src/lux/analyser/proc/common.clj
index 359fcb314..7b6bc6a3f 100644
--- a/luxc/src/lux/analyser/proc/common.clj
+++ b/luxc/src/lux/analyser/proc/common.clj
@@ -12,7 +12,7 @@
(|do [:let [(&/$Cons left (&/$Cons right (&/$Nil))) ?values]
=left (&&/analyse-1 analyse $var left)
=right (&&/analyse-1 analyse $var right)
- _ (&type/check exo-type &type/Bool)
+ _ (&type/check exo-type &type/Bit)
_cursor &/cursor]
(return (&/|list (&&/|meta exo-type _cursor
(&&/$proc (&/T ["lux" "is"]) (&/|list =left =right) (&/|list)))))))))
@@ -39,8 +39,8 @@
(return (&/|list (&&/|meta exo-type _cursor
(&&/$proc (&/T <proc>) (&/|list =x =y) (&/|list)))))))
- ^:private analyse-text-eq ["text" "="] &type/Text &type/Bool
- ^:private analyse-text-lt ["text" "<"] &type/Text &type/Bool
+ ^:private analyse-text-eq ["text" "="] &type/Text &type/Bit
+ ^:private analyse-text-lt ["text" "<"] &type/Text &type/Bit
^:private analyse-text-concat ["text" "concat"] &type/Text &type/Text
)
@@ -143,7 +143,7 @@
(return (&/|list (&&/|meta exo-type _cursor
(&&/$proc (&/T <proc>) (&/|list subjectA paramA) (&/|list))))))))
- ^:private analyse-i64-eq ["i64" "="] (&/$Apply &type/Any &type/I64) &type/Bool
+ ^:private analyse-i64-eq ["i64" "="] (&/$Apply &type/Any &type/I64) &type/Bit
^:private analyse-i64-add ["i64" "+"] (&/$Apply &type/Any &type/I64) &type/I64
^:private analyse-i64-sub ["i64" "-"] (&/$Apply &type/Any &type/I64) &type/I64
)
@@ -163,15 +163,15 @@
^:private analyse-int-mul ["int" "*"] &type/Int &type/Int
^:private analyse-int-div ["int" "/"] &type/Int &type/Int
^:private analyse-int-rem ["int" "%"] &type/Int &type/Int
- ^:private analyse-int-lt ["int" "<"] &type/Int &type/Bool
+ ^:private analyse-int-lt ["int" "<"] &type/Int &type/Bit
^:private analyse-frac-add ["frac" "+"] &type/Frac &type/Frac
^:private analyse-frac-sub ["frac" "-"] &type/Frac &type/Frac
^:private analyse-frac-mul ["frac" "*"] &type/Frac &type/Frac
^:private analyse-frac-div ["frac" "/"] &type/Frac &type/Frac
^:private analyse-frac-rem ["frac" "%"] &type/Frac &type/Frac
- ^:private analyse-frac-eq ["frac" "="] &type/Frac &type/Bool
- ^:private analyse-frac-lt ["frac" "<"] &type/Frac &type/Bool
+ ^:private analyse-frac-eq ["frac" "="] &type/Frac &type/Bit
+ ^:private analyse-frac-lt ["frac" "<"] &type/Frac &type/Bit
)
(do-template [<encode> <encode-op> <decode> <decode-op> <type>]
@@ -348,7 +348,7 @@
=atom (&&/analyse-1 analyse (&type/Atom $var) ?atom)
=old (&&/analyse-1 analyse $var ?old)
=new (&&/analyse-1 analyse $var ?new)
- _ (&type/check exo-type &type/Bool)
+ _ (&type/check exo-type &type/Bit)
_cursor &/cursor]
(return (&/|list (&&/|meta exo-type _cursor
(&&/$proc (&/T ["atom" "compare-and-swap"]) (&/|list =atom =old =new) (&/|list)))))))))
diff --git a/luxc/src/lux/analyser/proc/jvm.clj b/luxc/src/lux/analyser/proc/jvm.clj
index b6d291073..98c2435e9 100644
--- a/luxc/src/lux/analyser/proc/jvm.clj
+++ b/luxc/src/lux/analyser/proc/jvm.clj
@@ -464,40 +464,40 @@
^:private analyse-jvm-imul "imul" "java.lang.Integer" "java.lang.Integer"
^:private analyse-jvm-idiv "idiv" "java.lang.Integer" "java.lang.Integer"
^:private analyse-jvm-irem "irem" "java.lang.Integer" "java.lang.Integer"
- ^:private analyse-jvm-ieq "ieq" "java.lang.Integer" "java.lang.Boolean"
- ^:private analyse-jvm-ilt "ilt" "java.lang.Integer" "java.lang.Boolean"
- ^:private analyse-jvm-igt "igt" "java.lang.Integer" "java.lang.Boolean"
+ ^:private analyse-jvm-ieq "ieq" "java.lang.Integer" "#Bit"
+ ^:private analyse-jvm-ilt "ilt" "java.lang.Integer" "#Bit"
+ ^:private analyse-jvm-igt "igt" "java.lang.Integer" "#Bit"
- ^:private analyse-jvm-ceq "ceq" "java.lang.Character" "java.lang.Boolean"
- ^:private analyse-jvm-clt "clt" "java.lang.Character" "java.lang.Boolean"
- ^:private analyse-jvm-cgt "cgt" "java.lang.Character" "java.lang.Boolean"
+ ^:private analyse-jvm-ceq "ceq" "java.lang.Character" "#Bit"
+ ^:private analyse-jvm-clt "clt" "java.lang.Character" "#Bit"
+ ^:private analyse-jvm-cgt "cgt" "java.lang.Character" "#Bit"
^:private analyse-jvm-ladd "ladd" "java.lang.Long" "java.lang.Long"
^:private analyse-jvm-lsub "lsub" "java.lang.Long" "java.lang.Long"
^:private analyse-jvm-lmul "lmul" "java.lang.Long" "java.lang.Long"
^:private analyse-jvm-ldiv "ldiv" "java.lang.Long" "java.lang.Long"
^:private analyse-jvm-lrem "lrem" "java.lang.Long" "java.lang.Long"
- ^:private analyse-jvm-leq "leq" "java.lang.Long" "java.lang.Boolean"
- ^:private analyse-jvm-llt "llt" "java.lang.Long" "java.lang.Boolean"
- ^:private analyse-jvm-lgt "lgt" "java.lang.Long" "java.lang.Boolean"
+ ^:private analyse-jvm-leq "leq" "java.lang.Long" "#Bit"
+ ^:private analyse-jvm-llt "llt" "java.lang.Long" "#Bit"
+ ^:private analyse-jvm-lgt "lgt" "java.lang.Long" "#Bit"
^:private analyse-jvm-fadd "fadd" "java.lang.Float" "java.lang.Float"
^:private analyse-jvm-fsub "fsub" "java.lang.Float" "java.lang.Float"
^:private analyse-jvm-fmul "fmul" "java.lang.Float" "java.lang.Float"
^:private analyse-jvm-fdiv "fdiv" "java.lang.Float" "java.lang.Float"
^:private analyse-jvm-frem "frem" "java.lang.Float" "java.lang.Float"
- ^:private analyse-jvm-feq "feq" "java.lang.Float" "java.lang.Boolean"
- ^:private analyse-jvm-flt "flt" "java.lang.Float" "java.lang.Boolean"
- ^:private analyse-jvm-fgt "fgt" "java.lang.Float" "java.lang.Boolean"
+ ^:private analyse-jvm-feq "feq" "java.lang.Float" "#Bit"
+ ^:private analyse-jvm-flt "flt" "java.lang.Float" "#Bit"
+ ^:private analyse-jvm-fgt "fgt" "java.lang.Float" "#Bit"
^:private analyse-jvm-dadd "dadd" "java.lang.Double" "java.lang.Double"
^:private analyse-jvm-dsub "dsub" "java.lang.Double" "java.lang.Double"
^:private analyse-jvm-dmul "dmul" "java.lang.Double" "java.lang.Double"
^:private analyse-jvm-ddiv "ddiv" "java.lang.Double" "java.lang.Double"
^:private analyse-jvm-drem "drem" "java.lang.Double" "java.lang.Double"
- ^:private analyse-jvm-deq "deq" "java.lang.Double" "java.lang.Boolean"
- ^:private analyse-jvm-dlt "dlt" "java.lang.Double" "java.lang.Boolean"
- ^:private analyse-jvm-dgt "dgt" "java.lang.Double" "java.lang.Boolean"
+ ^:private analyse-jvm-deq "deq" "java.lang.Double" "#Bit"
+ ^:private analyse-jvm-dlt "dlt" "java.lang.Double" "#Bit"
+ ^:private analyse-jvm-dgt "dgt" "java.lang.Double" "#Bit"
)
(let [length-type &type/Nat
@@ -606,7 +606,7 @@
(|do [:let [(&/$Cons object (&/$Nil)) ?values]
=object (&&/analyse-1+ analyse object)
_ (ensure-object (&&/expr-type* =object))
- :let [output-type &type/Bool]
+ :let [output-type &type/Bit]
_ (&type/check exo-type output-type)
_cursor &/cursor]
(return (&/|list (&&/|meta exo-type _cursor
@@ -805,7 +805,7 @@
(|do [:let [(&/$Cons object (&/$Nil)) ?values]
=object (&&/analyse-1+ analyse object)
_ (ensure-object (&&/expr-type* =object))
- :let [output-type &type/Bool]
+ :let [output-type &type/Bit]
_ (&type/check exo-type output-type)
_cursor &/cursor]
(return (&/|list (&&/|meta output-type _cursor
diff --git a/luxc/src/lux/base.clj b/luxc/src/lux/base.clj
index 37db2a480..464b7b585 100644
--- a/luxc/src/lux/base.clj
+++ b/luxc/src/lux/base.clj
@@ -71,7 +71,7 @@
;; Code
(defvariant
- ("Bool" 1)
+ ("Bit" 1)
("Nat" 1)
("Int" 1)
("Rev" 1)
@@ -410,7 +410,7 @@
(assert false (prn-str '|map f (adt->text xs)))))
(defn |empty?
- "(All [a] (-> (List a) Bool))"
+ "(All [a] (-> (List a) Bit))"
[xs]
(|case xs
($Nil)
@@ -420,7 +420,7 @@
false))
(defn |filter
- "(All [a] (-> (-> a Bool) (List a) (List a)))"
+ "(All [a] (-> (-> a Bit) (List a) (List a)))"
[p xs]
(|case xs
($Nil)
@@ -856,7 +856,7 @@
(do-template [<name> <tag>]
(defn <name>
- "(-> CompilerMode Bool)"
+ "(-> CompilerMode Bit)"
[mode]
(|case mode
(<tag>) true
@@ -1204,7 +1204,7 @@
(defn show-ast [ast]
(|case ast
- [_ ($Bool ?value)]
+ [_ ($Bit ?value)]
(pr-str ?value)
[_ ($Nat ?value)]
@@ -1325,7 +1325,7 @@
(return* state (|keys (get$ $modules state)))))
(defn when%
- "(-> Bool (Meta Any) (Meta Any))"
+ "(-> Bit (Meta Any) (Meta Any))"
[test body]
(if test
body
@@ -1377,7 +1377,7 @@
(do-template [<name> <default> <op>]
(defn <name>
- "(All [a] (-> (-> a Bool) (List a) Bool))"
+ "(All [a] (-> (-> a Bit) (List a) Bit))"
[p xs]
(|case xs
($Nil)
diff --git a/luxc/src/lux/compiler/cache.clj b/luxc/src/lux/compiler/cache.clj
index 04ef34e52..0b8739463 100644
--- a/luxc/src/lux/compiler/cache.clj
+++ b/luxc/src/lux/compiler/cache.clj
@@ -28,12 +28,14 @@
java.io.File/separator
(.replace ^String (&host/->module-class module) "/" java.io.File/separator)))
-(defn cached? [module]
- "(-> Text Bool)"
+(defn cached?
+ "(-> Text Bit)"
+ [module]
(.exists (new File (str (module-path module) java.io.File/separator &&core/lux-module-descriptor-name))))
-(defn delete [module]
+(defn delete
"(-> Text (Lux Null))"
+ [module]
(fn [state]
(do (delete-all-module-files (new File (module-path module)))
(return* state nil))))
@@ -48,8 +50,9 @@
(apply concat)
(list* module)))
-(defn clean [state]
+(defn clean
"(-> Lux Null)"
+ [state]
(let [needed-modules (->> state (&/get$ &/$modules) &/|keys &/->seq set)
output-dir-prefix (str (.getAbsolutePath (new File ^String @&&core/!output-dir)) java.io.File/separator)
outdated? #(->> % (contains? needed-modules) not)
@@ -237,8 +240,9 @@
compiler)
nil)))
-(defn load [module-name]
+(defn load
"(-> Text (Lux Null))"
+ [module-name]
(if-let [module-struct (get @!pre-loaded-cache module-name)]
(|do [_ (inject-module module-name module-struct)]
(return nil))
diff --git a/luxc/src/lux/compiler/cache/ann.clj b/luxc/src/lux/compiler/cache/ann.clj
index 458146992..bab3d20c7 100644
--- a/luxc/src/lux/compiler/cache/ann.clj
+++ b/luxc/src/lux/compiler/cache/ann.clj
@@ -24,7 +24,7 @@
"(-> Code Text)"
[ann]
(|case ann
- [_ (&/$Bool value)]
+ [_ (&/$Bit value)]
(str "B" value stop)
[_ (&/$Nat value)]
@@ -76,7 +76,7 @@
(let [[value* ^String input*] (.split (.substring input 1) stop 2)]
[(&/T [dummy-cursor (<ctor> (<parser> value*))]) input*])))
- ^:private deserialize-bool "B" &/$Bool Boolean/parseBoolean
+ ^:private deserialize-bit "B" &/$Bit Boolean/parseBoolean
^:private deserialize-nat "N" &/$Nat Long/parseLong
^:private deserialize-int "I" &/$Int Long/parseLong
^:private deserialize-rev "D" &/$Rev Long/parseLong
@@ -124,7 +124,7 @@
(defn deserialize
"(-> Text V[Code Text])"
[input]
- (or (deserialize-bool input)
+ (or (deserialize-bit input)
(deserialize-nat input)
(deserialize-int input)
(deserialize-rev input)
diff --git a/luxc/src/lux/compiler/jvm.clj b/luxc/src/lux/compiler/jvm.clj
index a13427bc3..60a2c7d2e 100644
--- a/luxc/src/lux/compiler/jvm.clj
+++ b/luxc/src/lux/compiler/jvm.clj
@@ -47,8 +47,8 @@
(.visitLineNumber (int _line) debug-label))
(swap! !source->last-line assoc _file-name _line))]]
(|case ?form
- (&o/$bool ?value)
- (&&lux/compile-bool ?value)
+ (&o/$bit ?value)
+ (&&lux/compile-bit ?value)
(&o/$nat ?value)
(&&lux/compile-nat ?value)
diff --git a/luxc/src/lux/compiler/jvm/base.clj b/luxc/src/lux/compiler/jvm/base.clj
index 99e0f08e9..b5e520de5 100644
--- a/luxc/src/lux/compiler/jvm/base.clj
+++ b/luxc/src/lux/compiler/jvm/base.clj
@@ -43,8 +43,9 @@
(.mkdirs (File. module-dir))
(&&/write-file (str module-dir java.io.File/separator name ".class") data)))
-(defn class-exists? [^String module ^String class-name]
- "(-> Text Text (IO Bool))"
+(defn class-exists?
+ "(-> Text Text (IO Bit))"
+ [^String module ^String class-name]
(|do [_ (return nil)
:let [full-path (str @&&/!output-dir java.io.File/separator module java.io.File/separator class-name ".class")
exists? (.exists (File. full-path))]]
diff --git a/luxc/src/lux/compiler/jvm/case.clj b/luxc/src/lux/compiler/jvm/case.clj
index 79e6c559c..4c195ba36 100644
--- a/luxc/src/lux/compiler/jvm/case.clj
+++ b/luxc/src/lux/compiler/jvm/case.clj
@@ -63,7 +63,7 @@
(.visitVarInsn Opcodes/ASTORE _var-id)
(.visitMethodInsn Opcodes/INVOKESTATIC "lux/LuxRT" "pm_stack_pop" "([Ljava/lang/Object;)[Ljava/lang/Object;"))
- (&o/$BoolPM _value)
+ (&o/$BitPM _value)
(doto writer
stack-peek
&&/unwrap-boolean
diff --git a/luxc/src/lux/compiler/jvm/lux.clj b/luxc/src/lux/compiler/jvm/lux.clj
index 6a85e1075..d9b9f00d0 100644
--- a/luxc/src/lux/compiler/jvm/lux.clj
+++ b/luxc/src/lux/compiler/jvm/lux.clj
@@ -24,7 +24,7 @@
java.lang.reflect.Field))
;; [Exports]
-(defn compile-bool [?value]
+(defn compile-bit [?value]
(|do [^MethodVisitor *writer* &/get-writer
:let [_ (.visitFieldInsn *writer* Opcodes/GETSTATIC "java/lang/Boolean" (if ?value "TRUE" "FALSE") "Ljava/lang/Boolean;")]]
(return nil)))
@@ -253,7 +253,7 @@
:let [def-class (&&/load-class! class-loader (&host-generics/->class-name current-class))
def-type (&a/expr-type* ?body)
is-type? (|case (&a-meta/meta-get &a-meta/type?-tag ?meta)
- (&/$Some [_ (&/$Bool true)])
+ (&/$Some [_ (&/$Bit true)])
true
_
diff --git a/luxc/src/lux/lexer.clj b/luxc/src/lux/lexer.clj
index d56a901ff..be8f8b69a 100644
--- a/luxc/src/lux/lexer.clj
+++ b/luxc/src/lux/lexer.clj
@@ -9,7 +9,7 @@
(defvariant
("White_Space" 1)
("Comment" 1)
- ("Bool" 1)
+ ("Bit" 1)
("Nat" 1)
("Int" 1)
("Rev" 1)
@@ -130,7 +130,7 @@
(|do [[meta _ token] (&reader/read-regex <regex>)]
(return (&/T [meta (<tag> token)]))))
- lex-bool $Bool #"^(true|false)"
+ lex-bit $Bit #"^(true|false)"
)
(do-template [<name> <tag> <regex>]
@@ -205,7 +205,7 @@
(&/try-all-% "[Reader Error]"
(&/|list lex-white-space
lex-comment
- lex-bool
+ lex-bit
lex-nat
lex-frac
lex-rev
diff --git a/luxc/src/lux/optimizer.clj b/luxc/src/lux/optimizer.clj
index 8f331cc95..e1187594c 100644
--- a/luxc/src/lux/optimizer.clj
+++ b/luxc/src/lux/optimizer.clj
@@ -6,7 +6,7 @@
;; [Tags]
(defvariant
;; These tags just have a one-to-one correspondence with Analysis data-structures.
- ("bool" 1)
+ ("bit" 1)
("nat" 1)
("int" 1)
("rev" 1)
@@ -65,8 +65,8 @@
("PopPM" 0)
;; Store the CDN in a register.
("BindPM" 1)
- ;; Compare the CDN with a boolean value.
- ("BoolPM" 1)
+ ;; Compare the CDN with a bit value.
+ ("BitPM" 1)
;; Compare the CDN with a natural value.
("NatPM" 1)
;; Compare the CDN with an integer value.
@@ -174,8 +174,8 @@
(&a-case/$StoreTestAC _register)
(&/|list ($BindPM _register))
- (&a-case/$BoolTestAC _value)
- (&/|list ($BoolPM _value)
+ (&a-case/$BitTestAC _value)
+ (&/|list ($BitPM _value)
$PopPM)
(&a-case/$NatTestAC _value)
@@ -275,9 +275,9 @@
($BindPM _pre-var-id)
($AltPM pre post))
- [($BoolPM _pre-value) ($BoolPM _post-value)]
+ [($BitPM _pre-value) ($BitPM _post-value)]
(if (= _pre-value _post-value)
- ($BoolPM _pre-value)
+ ($BitPM _pre-value)
($AltPM pre post))
[($NatPM _pre-value) ($NatPM _post-value)]
@@ -632,7 +632,7 @@
;; Shifts the body of a function after a folding is performed.
(defn shift-function-body
- "(-> Scope Scope Bool Optimized Optimized)"
+ "(-> Scope Scope Bit Optimized Optimized)"
[old-scope new-scope own-body? body]
(|let [[meta body-] body]
(|case body-
@@ -818,7 +818,7 @@
)))
(defn ^:private contains-self-reference?
- "(-> Optimized Bool)"
+ "(-> Optimized Bit)"
[body]
(|let [[meta body-] body
stepwise-test (fn [base arg] (or base (contains-self-reference? arg)))]
@@ -997,12 +997,12 @@
(&/T [_name (optimize _analysis)])))
closure))]
(defn ^:private pass-0
- "(-> Bool Analysis Optimized)"
+ "(-> Bit Analysis Optimized)"
[top-level-func? analysis]
(|let [[meta analysis-] analysis]
(|case analysis-
- (&a/$bool value)
- (&/T [meta ($bool value)])
+ (&a/$bit value)
+ (&/T [meta ($bit value)])
(&a/$nat value)
(&/T [meta ($nat value)])
@@ -1052,8 +1052,8 @@
(&/$Cons [(&a-case/$StoreTestAC _register) _body] (&/$Nil))
(&/T [meta ($let (pass-0 top-level-func? value) _register (pass-0 top-level-func? _body))])
- (&/$Cons [(&a-case/$BoolTestAC false) _else]
- (&/$Cons [(&a-case/$BoolTestAC true) _then]
+ (&/$Cons [(&a-case/$BitTestAC false) _else]
+ (&/$Cons [(&a-case/$BitTestAC true) _then]
(&/$Nil)))
(&/T [meta ($if (pass-0 top-level-func? value) (pass-0 top-level-func? _then) (pass-0 top-level-func? _else))])
diff --git a/luxc/src/lux/parser.clj b/luxc/src/lux/parser.clj
index 130a794ac..92a23da81 100644
--- a/luxc/src/lux/parser.clj
+++ b/luxc/src/lux/parser.clj
@@ -64,8 +64,8 @@
(&lexer/$Comment _)
(return &/$Nil)
- (&lexer/$Bool ?value)
- (return (&/|list (&/T [meta (&/$Bool (Boolean/parseBoolean ?value))])))
+ (&lexer/$Bit ?value)
+ (return (&/|list (&/T [meta (&/$Bit (Boolean/parseBoolean ?value))])))
(&lexer/$Nat ?value)
(return (&/|list (&/T [meta (&/$Nat (Long/parseUnsignedLong ?value))])))
diff --git a/luxc/src/lux/type.clj b/luxc/src/lux/type.clj
index 6cc33688e..8a498463e 100644
--- a/luxc/src/lux/type.clj
+++ b/luxc/src/lux/type.clj
@@ -32,7 +32,7 @@
(def Rev* (&/$Primitive &&host/rev-data-tag &/$Nil))
(def Int* (&/$Primitive &&host/int-data-tag &/$Nil))
-(def Bool (&/$Named (&/T ["lux" "Bool"]) (&/$Primitive "#Bool" &/$Nil)))
+(def Bit (&/$Named (&/T ["lux" "Bit"]) (&/$Primitive "#Bit" &/$Nil)))
(def Nat (&/$Named (&/T ["lux" "Nat"]) (&/$Apply Nat* I64)))
(def Rev (&/$Named (&/T ["lux" "Rev"]) (&/$Apply Rev* I64)))
(def Int (&/$Named (&/T ["lux" "Int"]) (&/$Apply Int* I64)))
@@ -150,8 +150,8 @@
(&/$Parameter 1))
Code-List (&/$Apply Code List)]
(&/$UnivQ empty-env
- (&/$Sum ;; "lux;Bool"
- Bool
+ (&/$Sum ;; "lux;Bit"
+ Bit
(&/$Sum ;; "lux;Nat"
Nat
(&/$Sum ;; "lux;Int"
@@ -886,7 +886,7 @@
))
(defn unknown? [type]
- "(-> Type (Lux Bool))"
+ "(-> Type (Lux Bit))"
(|case type
(&/$Var id)
(|do [? (bound? id)]
diff --git a/luxc/src/lux/type/host.clj b/luxc/src/lux/type/host.clj
index 474153316..e0eafdd73 100644
--- a/luxc/src/lux/type/host.clj
+++ b/luxc/src/lux/type/host.clj
@@ -310,7 +310,7 @@
(contains? primitive-types type-name)))
(def ^:private lux-jvm-type-combos
- #{#{"java.lang.Boolean" "#Bool"}
+ #{#{"java.lang.Boolean" "#Bit"}
#{"java.lang.Long" i64-data-tag}
#{"java.lang.Double" "#Frac"}
#{"java.lang.String" "#Text"}})