diff options
213 files changed, 992 insertions, 971 deletions
diff --git a/lux-lein/src/leiningen/lux/packager.clj b/lux-lein/src/leiningen/lux/packager.clj index 9bea3ef5c..42d32fe95 100644 --- a/lux-lein/src/leiningen/lux/packager.clj +++ b/lux-lein/src/leiningen/lux/packager.clj @@ -22,7 +22,7 @@ (def ^:private buffer-size (* 10 kilobyte)) (defn ^:private manifest - "(-> Project Text Bool Manifest)" + "(-> Project Text Bit Manifest)" [project module includes-android?] (doto (new Manifest) (-> .getMainAttributes diff --git a/lux-mode/lux-mode.el b/lux-mode/lux-mode.el index 54eab4e63..50313365f 100644 --- a/lux-mode/lux-mode.el +++ b/lux-mode/lux-mode.el @@ -246,7 +246,7 @@ Called by `imenu--generic-function'." ) t) "\\>") 1 font-lock-builtin-face) - ; Bool literals + ; Bit literals (,(concat "\\<" (regexp-opt 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"}}) diff --git a/new-luxc/source/luxc/lang/host/common-lisp.lux b/new-luxc/source/luxc/lang/host/common-lisp.lux index 77b8cfc22..fb6a933df 100644 --- a/new-luxc/source/luxc/lang/host/common-lisp.lux +++ b/new-luxc/source/luxc/lang/host/common-lisp.lux @@ -53,7 +53,7 @@ (:abstraction "()")) (def: #export bool - (-> Bool Expression) + (-> Bit Expression) (|>> (case> true (:abstraction "t") false ..nil))) diff --git a/new-luxc/source/luxc/lang/host/jvm.lux b/new-luxc/source/luxc/lang/host/jvm.lux index d30df3fd3..3c5fa3150 100644 --- a/new-luxc/source/luxc/lang/host/jvm.lux +++ b/new-luxc/source/luxc/lang/host/jvm.lux @@ -97,7 +97,7 @@ options)] (wrap (list& (` (type: (~' #export) (~ g!type) (~ (code.record (list/map (function (_ tag) - [tag (` .Bool)]) + [tag (` .Bit)]) g!tags+))))) (` (def: (~' #export) (~ g!none) diff --git a/new-luxc/source/luxc/lang/host/jvm/def.lux b/new-luxc/source/luxc/lang/host/jvm/def.lux index c973f79c3..4c19f38f6 100644 --- a/new-luxc/source/luxc/lang/host/jvm/def.lux +++ b/new-luxc/source/luxc/lang/host/jvm/def.lux @@ -265,7 +265,7 @@ (FieldVisitor::visitEnd []))] writer)))] - [boolean-field Bool $t.boolean id] + [boolean-field Bit $t.boolean id] [byte-field Int $t.byte host.long-to-byte] [short-field Int $t.short host.long-to-short] [int-field Int $t.int host.long-to-int] diff --git a/new-luxc/source/luxc/lang/host/jvm/inst.lux b/new-luxc/source/luxc/lang/host/jvm/inst.lux index c3088ec7d..3f0f68def 100644 --- a/new-luxc/source/luxc/lang/host/jvm/inst.lux +++ b/new-luxc/source/luxc/lang/host/jvm/inst.lux @@ -127,7 +127,7 @@ (do-to visitor (MethodVisitor::visitLdcInsn [(<prepare> value)]))))] - [boolean Bool id] + [boolean Bit id] [int Int host.long-to-int] [long Int id] [double Frac id] @@ -259,7 +259,7 @@ (do-template [<name> <inst>] [(def: #export (<name> class method-name method-signature interface?) - (-> Text Text //.Method Bool //.Inst) + (-> Text Text //.Method Bit //.Inst) (function (_ visitor) (do-to visitor (MethodVisitor::visitMethodInsn [<inst> (//type.binary-name class) method-name (//type.method-descriptor method-signature) interface?]))))] diff --git a/new-luxc/source/luxc/lang/host/lua.lux b/new-luxc/source/luxc/lang/host/lua.lux index 8f057bc29..ec2fa8928 100644 --- a/new-luxc/source/luxc/lang/host/lua.lux +++ b/new-luxc/source/luxc/lang/host/lua.lux @@ -15,7 +15,7 @@ "nil") (def: #export bool - (-> Bool Expression) + (-> Bit Expression) %b) (def: #export int diff --git a/new-luxc/source/luxc/lang/host/php.lux b/new-luxc/source/luxc/lang/host/php.lux index 50d618f85..34c7c0535 100644 --- a/new-luxc/source/luxc/lang/host/php.lux +++ b/new-luxc/source/luxc/lang/host/php.lux @@ -23,7 +23,7 @@ (type: #export Global (Code' (Expression' Global'))) (type: #export Var (Code' (Expression' Var'))) (type: #export Argument - {#reference? Bool + {#reference? Bit #var Var}) (type: #export Computation (Code' (Expression' Computation'))) (type: #export Statement (Code' Statement')) @@ -82,8 +82,10 @@ (:abstraction "NULL")) (def: #export bool - (-> Bool Computation) - (|>> %b :abstraction)) + (-> Bit Computation) + (|>> (case> true "true" + false "false") + :abstraction)) (def: #export int (-> Int Computation) diff --git a/new-luxc/source/luxc/lang/host/python.lux b/new-luxc/source/luxc/lang/host/python.lux index c9835aa5d..e39ce5571 100644 --- a/new-luxc/source/luxc/lang/host/python.lux +++ b/new-luxc/source/luxc/lang/host/python.lux @@ -48,7 +48,7 @@ (:abstraction "None")) (def: #export bool - (-> Bool Expression) + (-> Bit Expression) (|>> (case> true "True" false "False") :abstraction)) diff --git a/new-luxc/source/luxc/lang/host/r.lux b/new-luxc/source/luxc/lang/host/r.lux index 6667d531f..4655c1343 100644 --- a/new-luxc/source/luxc/lang/host/r.lux +++ b/new-luxc/source/luxc/lang/host/r.lux @@ -66,7 +66,7 @@ (def: #export no-answer Expression n/a) (def: #export bool - (-> Bool Expression) + (-> Bit Expression) (|>> (case> true "TRUE" false "FALSE") self-contained)) diff --git a/new-luxc/source/luxc/lang/host/ruby.lux b/new-luxc/source/luxc/lang/host/ruby.lux index c2bc6e95f..51b0d7ea7 100644 --- a/new-luxc/source/luxc/lang/host/ruby.lux +++ b/new-luxc/source/luxc/lang/host/ruby.lux @@ -1,8 +1,11 @@ (.module: [lux #- not or and] - (lux (data [text] - text/format - (coll [list "list/" Functor<List> Fold<List>])))) + (lux + (control + pipe) + (data [text] + text/format + (coll [list "list/" Functor<List> Fold<List>])))) (type: #export Ruby Text) @@ -15,8 +18,9 @@ "nil") (def: #export bool - (-> Bool Expression) - %b) + (-> Bit Expression) + (|>> (case> true "true" + false "false"))) (def: #export int (-> Int Expression) diff --git a/new-luxc/source/luxc/lang/synthesis/variable.lux b/new-luxc/source/luxc/lang/synthesis/variable.lux index 4a3317d9f..f6a45b02e 100644 --- a/new-luxc/source/luxc/lang/synthesis/variable.lux +++ b/new-luxc/source/luxc/lang/synthesis/variable.lux @@ -35,7 +35,7 @@ (list))) (def: (non-arg? arity var) - (-> ls.Arity Variable Bool) + (-> ls.Arity Variable Bit) (and (variableL.local? var) (n/> arity (.nat var)))) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux index 9d781429e..373d23ae4 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux @@ -29,7 +29,7 @@ bodyO)))) (def: #export (translate-record-get translate valueS pathP) - (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bool]) + (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -115,7 +115,7 @@ [_ (<tag> value)] (meta/wrap (_.when (|> value <format> (<=> cursor-top) _.not) fail-pm!))) - ([#.Bool _.bool _.equal] + ([#.Bit _.bool _.equal] [#.Nat (<| _.int (:coerce Int)) _.=] [#.Int _.int _.=] [#.Rev (<| _.int (:coerce Int)) _.=] diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux index a10fa0d5d..c88e83ed5 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux @@ -85,7 +85,7 @@ (#e.Success output))))) (def: (variant tag flag value) - (-> Nat Bool Any Any) + (-> Nat Bit Any Any) [(Long::intValue [] (:coerce Long tag)) (: Any (if flag diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/expression.jvm.lux index 4e0c617b4..d3761ff6b 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/expression.jvm.lux @@ -38,14 +38,14 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Nat primitiveT.translate-nat] [#.Int primitiveT.translate-int] [#.Rev primitiveT.translate-rev] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~ singleton)]) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux index 1c8c17bed..7556e6ebb 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux @@ -5,8 +5,8 @@ [//] (// [".T" runtime])) -(def: #export translate-bool - (-> Bool (Meta Expression)) +(def: #export translate-bit + (-> Bit (Meta Expression)) (|>> _.bool meta/wrap)) (def: #export translate-int diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux index cd12328e2..43c1fd2a0 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux @@ -19,7 +19,7 @@ (def: #export unit Expression (_.string //.unit)) (def: (flag value) - (-> Bool Expression) + (-> Bit Expression) (if value (_.string "") _.nil)) @@ -32,7 +32,7 @@ value)) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (_.int (:coerce Int tag)) (flag last?) value)) (def: #export none diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/structure.jvm.lux index fe7009627..dcf7e5693 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (_.vector elemsT+))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/js/case.jvm.lux b/new-luxc/source/luxc/lang/translation/js/case.jvm.lux index fc01a9d7c..e8fdcb00c 100644 --- a/new-luxc/source/luxc/lang/translation/js/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/case.jvm.lux @@ -25,7 +25,7 @@ "})()")))) (def: #export (translate-record-get translate valueS path) - (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bool]) + (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueJS (translate valueS)] @@ -105,7 +105,7 @@ (^template [<tag> <format>] [_ (<tag> value)] (meta/wrap (format "if(" peek-cursor " !== " (<format> value) ") { " fail-pattern-matching " }"))) - ([#.Bool %b] + ([#.Bit %b] [#.Frac %f] [#.Text %t]) diff --git a/new-luxc/source/luxc/lang/translation/js/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/js/expression.jvm.lux index 8a5e73c75..544dd1eca 100644 --- a/new-luxc/source/luxc/lang/translation/js/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/expression.jvm.lux @@ -42,14 +42,14 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Nat primitiveT.translate-nat] [#.Int primitiveT.translate-int] [#.Rev primitiveT.translate-rev] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux index 753f1ce45..e69291007 100644 --- a/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux @@ -9,8 +9,8 @@ (// [".T" runtime]) (luxc (lang (host [js #+ JS Expression Statement])))) -(def: #export translate-bool - (-> Bool (Meta Expression)) +(def: #export translate-bit + (-> Bit (Meta Expression)) (|>> %b meta/wrap)) (def: low-mask Nat (dec (bit.left-shift +32 +1))) diff --git a/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux index 9840bba1f..8adfd22bf 100644 --- a/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux @@ -14,7 +14,7 @@ (def: #export unit Expression (%t //.unit)) (def: (flag value) - (-> Bool JS) + (-> Bit JS) (if value (%t "") "null")) @@ -26,7 +26,7 @@ [//.variant-value-field value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (%i (.int tag)) (flag last?) value)) (def: none diff --git a/new-luxc/source/luxc/lang/translation/js/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/js/structure.jvm.lux index df7215dba..580f48807 100644 --- a/new-luxc/source/luxc/lang/translation/js/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (format "[" (text.join-with "," elemsT+) "]"))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux index 18309b0e5..d29b9ae7c 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux @@ -73,7 +73,7 @@ (macro/wrap (|>> peekI ($i.ASTORE register))) - [_ (#.Bool value)] + [_ (#.Bit value)] (macro/wrap (let [jumpI (if value $i.IFEQ $i.IFNE)] (|>> peekI ($i.unwrap #$.Boolean) diff --git a/new-luxc/source/luxc/lang/translation/jvm/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/expression.jvm.lux index a587d2e5b..b6fed434e 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/expression.jvm.lux @@ -32,8 +32,8 @@ (def: #export (translate synthesis) (-> Synthesis (Meta $.Inst)) (case synthesis - (^ (//synthesis.bool value)) - (primitiveT.translate-bool value) + (^ (//synthesis.bit value)) + (primitiveT.translate-bit value) (^ (//synthesis.i64 value)) (primitiveT.translate-i64 value) @@ -44,7 +44,7 @@ (^ (//synthesis.text value)) (primitiveT.translate-text value) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/jvm/function.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/function.jvm.lux index 70eedf738..062cf5d52 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/function.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/function.jvm.lux @@ -23,7 +23,7 @@ (def: $Object $.Type ($t.class "java.lang.Object" (list))) (def: (poly-arg? arity) - (-> ls.Arity Bool) + (-> ls.Arity Bit) (n/> +1 arity)) (def: (reset-method class) diff --git a/new-luxc/source/luxc/lang/translation/jvm/imports.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/imports.jvm.lux index 22fdfbece..820024153 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/imports.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/imports.jvm.lux @@ -66,7 +66,7 @@ (<| (Future::get []) promise-to-future (do promise.Monad<Promise> - [[new? future] (stm.commit (: (STM [Bool (CompletableFuture (Error Lux))]) + [[new? future] (stm.commit (: (STM [Bit (CompletableFuture (Error Lux))]) (do stm.Monad<STM> [current-compilations (stm.read compilations)] (case (dict.get dependency current-compilations) @@ -87,7 +87,7 @@ (wrap future))))) (def: compiled? - (-> Module Bool) + (-> Module Bit) (|>> (get@ #.module-state) (case> (^or #.Cached #.Compiled) diff --git a/new-luxc/source/luxc/lang/translation/jvm/loop.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/loop.jvm.lux index f48ab149a..120a3e384 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/loop.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/loop.jvm.lux @@ -19,7 +19,7 @@ [".T" reference])) (def: (constant? register changeS) - (-> Register ls.Synthesis Bool) + (-> Register ls.Synthesis Bit) (case changeS (^multi (^code ((~ [_ (#.Int var)]))) (i/= (variableL.local register) diff --git a/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux index 80a243852..250b0db52 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux @@ -12,8 +12,8 @@ ["ls" synthesis])) (// [".T" common])) -(def: #export (translate-bool value) - (-> Bool (Meta $.Inst)) +(def: #export (translate-bit value) + (-> Bit (Meta $.Inst)) (macro/wrap ($i.GETSTATIC "java.lang.Boolean" (if value "TRUE" "FALSE") ($t.class "java.lang.Boolean" (list))))) diff --git a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux index f6a0069f5..45cb67fb9 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux @@ -155,6 +155,10 @@ [double//% $i.DREM #$.Double #$.Double #$.Double] ) +(def: boolean-class ($t.class "java.lang.Boolean" (list))) +(def: falseI ($i.GETSTATIC "java.lang.Boolean" "FALSE" boolean-class)) +(def: trueI ($i.GETSTATIC "java.lang.Boolean" "TRUE" boolean-class)) + (do-template [<name> <op> <unwrapX> <unwrapY> <wrap>] [(def: (<name> [xI yI]) @.Binary @@ -163,10 +167,10 @@ (|>> xI ($i.unwrap <unwrapX>) yI ($i.unwrap <unwrapY>) (<op> @then) - ($i.GETSTATIC "java.lang.Boolean" "FALSE" ($t.class "java.lang.Boolean" (list))) + falseI ($i.GOTO @end) ($i.label @then) - ($i.GETSTATIC "java.lang.Boolean" "TRUE" ($t.class "java.lang.Boolean" (list))) + trueI ($i.label @end))))] [int//= $i.IF_ICMPEQ #$.Int #$.Int #$.Boolean] @@ -186,10 +190,10 @@ <op> ($i.int <reference>) ($i.IF_ICMPEQ @then) - ($i.GETSTATIC "java.lang.Boolean" "FALSE" ($t.class "java.lang.Boolean" (list))) + falseI ($i.GOTO @end) ($i.label @then) - ($i.GETSTATIC "java.lang.Boolean" "TRUE" ($t.class "java.lang.Boolean" (list))) + trueI ($i.label @end))))] [long//= $i.LCMP 0 #$.Long #$.Long #$.Boolean] @@ -380,10 +384,10 @@ $i.with-label (function (_ @end)) (|>> objectI ($i.IFNULL @then) - ($i.GETSTATIC "java.lang.Boolean" "FALSE" ($t.class "java.lang.Boolean" (list))) + falseI ($i.GOTO @end) ($i.label @then) - ($i.GETSTATIC "java.lang.Boolean" "TRUE" ($t.class "java.lang.Boolean" (list))) + trueI ($i.label @end)))) (def: (object//synchronized [monitorI exprI]) diff --git a/new-luxc/source/luxc/lang/translation/jvm/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/structure.jvm.lux index fce1c6790..9d3e4d097 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/structure.jvm.lux @@ -42,13 +42,13 @@ membersI)))) (def: (flagI tail?) - (-> Bool $.Inst) + (-> Bit $.Inst) (if tail? ($i.string "") $i.NULL)) (def: #export (translate-variant translate tag tail? member) - (-> (-> ls.Synthesis (Meta $.Inst)) Nat Bool ls.Synthesis (Meta $.Inst)) + (-> (-> ls.Synthesis (Meta $.Inst)) Nat Bit ls.Synthesis (Meta $.Inst)) (do macro.Monad<Meta> [memberI (translate member)] (wrap (|>> ($i.int (.int tag)) diff --git a/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux index 70d2330f4..af4e61b7c 100644 --- a/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux @@ -30,7 +30,7 @@ (lua.return! bodyO))))))) (def: #export (translate-record-get translate valueS path) - (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bool]) + (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -105,7 +105,7 @@ ([#.Nat (<| lua.int (:coerce Int))] [#.Int lua.int] [#.Rev (<| lua.int (:coerce Int))] - [#.Bool lua.bool] + [#.Bit lua.bool] [#.Frac lua.float] [#.Text lua.string]) diff --git a/new-luxc/source/luxc/lang/translation/lua/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/expression.jvm.lux index 9632d5708..0fefcc8ba 100644 --- a/new-luxc/source/luxc/lang/translation/lua/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/expression.jvm.lux @@ -42,14 +42,14 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Nat primitiveT.translate-nat] [#.Int primitiveT.translate-int] [#.Rev primitiveT.translate-rev] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux index 4a6c78b04..230498fcb 100644 --- a/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux @@ -6,13 +6,13 @@ [macro "meta/" Monad<Meta>]) (luxc (lang (host [lua #+ Lua Expression Statement])))) -(def: #export translate-bool - (-> Bool (Meta Expression)) - (|>> %b meta/wrap)) +(def: #export translate-bit + (-> Bit (Meta Expression)) + (|>> lua.bool meta/wrap)) (def: #export translate-int (-> Int (Meta Expression)) - (|>> %i meta/wrap)) + (|>> lua.int meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux index 2c0dfec17..6be20a0e6 100644 --- a/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux @@ -17,7 +17,7 @@ (def: #export unit Expression (%t //.unit)) (def: (flag value) - (-> Bool Lua) + (-> Bit Lua) (if value (lua.string "") lua.nil)) @@ -29,7 +29,7 @@ [//.variant-value-field value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (%i (.int tag)) (flag last?) value)) (def: none diff --git a/new-luxc/source/luxc/lang/translation/lua/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/structure.jvm.lux index c629b0cae..b6eeaa013 100644 --- a/new-luxc/source/luxc/lang/translation/lua/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (format "{" (text.join-with "," elemsT+) "}"))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/php/case.jvm.lux b/new-luxc/source/luxc/lang/translation/php/case.jvm.lux index 0e0aecb7d..c438425ff 100644 --- a/new-luxc/source/luxc/lang/translation/php/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/case.jvm.lux @@ -31,7 +31,7 @@ (_.nth (_.int 1)))))) (def: #export (translate-record-get translate valueS pathP) - (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bool]) + (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -115,7 +115,7 @@ (meta/wrap (_.when! (_.not (_.= (|> value <format>) cursor-top)) fail-pm!))) ([#.Int _.int] - [#.Bool _.bool] + [#.Bit _.bool] [#.Frac _.float] [#.Text _.string]) @@ -196,7 +196,7 @@ ## TODO: Remove (let [inner recur]) once loops can have names. (let [inner recur] (case bodyS - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (inner valueS inner-variables) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux index 420775734..b7f9661e7 100644 --- a/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux @@ -36,12 +36,12 @@ (^template [<tag> <generator>] [_ (<tag> value)] (|> value <generator>)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Int primitiveT.translate-int] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/php/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/php/primitive.jvm.lux index 6fcd675ce..061833c70 100644 --- a/new-luxc/source/luxc/lang/translation/php/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/primitive.jvm.lux @@ -3,8 +3,8 @@ (lux [macro "meta/" Monad<Meta>]) (luxc (lang (host ["_" php #+ Computation])))) -(def: #export translate-bool - (-> Bool (Meta Computation)) +(def: #export translate-bit + (-> Bit (Meta Computation)) (|>> _.bool meta/wrap)) (def: #export translate-int diff --git a/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux index aeffe45e5..045f8ceb7 100644 --- a/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux @@ -17,7 +17,7 @@ (def: #export unit Computation (_.string //.unit)) (def: (flag value) - (-> Bool Computation) + (-> Bit Computation) (if value (_.string "") _.null)) @@ -29,7 +29,7 @@ [(_.string //.variant-value-field) value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Computation) + (-> Nat Bit Expression Computation) (variant' (_.int (.int tag)) (flag last?) value)) diff --git a/new-luxc/source/luxc/lang/translation/php/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/php/structure.jvm.lux index a92340e92..229b0e31d 100644 --- a/new-luxc/source/luxc/lang/translation/php/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (_.array/* elemsT+))))) (def: #export (translate-variant translate tag tail? valueS) - (-> //.Translator Nat Bool Synthesis (Meta Computation)) + (-> //.Translator Nat Bit Synthesis (Meta Computation)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/python/case.jvm.lux b/new-luxc/source/luxc/lang/translation/python/case.jvm.lux index 8e5b16a88..809b32c23 100644 --- a/new-luxc/source/luxc/lang/translation/python/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/case.jvm.lux @@ -30,7 +30,7 @@ (python.apply (list valueO)))))) (def: #export (translate-record-get translate valueS pathP) - (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bool]) + (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -118,7 +118,7 @@ ([#.Nat (<| python.int (:coerce Int))] [#.Int python.int] [#.Rev (<| python.int (:coerce Int))] - [#.Bool python.bool] + [#.Bit python.bool] [#.Frac python.float] [#.Text python.string]) @@ -204,7 +204,7 @@ ## TODO: Remove (let [inner recur]) once loops can have names. (let [inner recur] (case bodyS - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (inner valueS inner-variables) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/python/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/python/expression.jvm.lux index a1abe59a6..62be95f27 100644 --- a/new-luxc/source/luxc/lang/translation/python/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/expression.jvm.lux @@ -41,14 +41,14 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Nat primitiveT.translate-nat] [#.Int primitiveT.translate-int] [#.Rev primitiveT.translate-rev] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux index 439404893..f88c34fce 100644 --- a/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux @@ -3,8 +3,8 @@ (lux [macro "meta/" Monad<Meta>]) (luxc (lang (host [python #+ Expression Statement])))) -(def: #export translate-bool - (-> Bool (Meta Expression)) +(def: #export translate-bit + (-> Bit (Meta Expression)) (|>> python.bool meta/wrap)) (def: #export translate-int diff --git a/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux index fbd599c77..70ce11a94 100644 --- a/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux @@ -17,7 +17,7 @@ (def: #export unit Expression (python.string //.unit)) (def: (flag value) - (-> Bool Expression) + (-> Bit Expression) (if value (python.string "") python.none)) @@ -29,7 +29,7 @@ [(python.string //.variant-value-field) value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (python.int (.int tag)) (flag last?) value)) diff --git a/new-luxc/source/luxc/lang/translation/python/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/python/structure.jvm.lux index 0452ef504..158cf3a2c 100644 --- a/new-luxc/source/luxc/lang/translation/python/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (python.tuple elemsT+))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/r/case.jvm.lux b/new-luxc/source/luxc/lang/translation/r/case.jvm.lux index fb16b8791..42460b620 100644 --- a/new-luxc/source/luxc/lang/translation/r/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/case.jvm.lux @@ -31,7 +31,7 @@ bodyO))))) (def: #export (translate-record-get translate valueS pathP) - (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bool]) + (-> (-> Synthesis (Meta Expression)) Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -116,7 +116,7 @@ [_ (<tag> value)] (meta/wrap (r.when (r.not (r.= (|> value <format>) cursor-top)) fail-pm!))) - ([#.Bool r.bool] + ([#.Bit r.bool] [#.Frac r.float] [#.Text r.string]) diff --git a/new-luxc/source/luxc/lang/translation/r/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/r/expression.jvm.lux index cd2227df3..2e30b4999 100644 --- a/new-luxc/source/luxc/lang/translation/r/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/expression.jvm.lux @@ -39,14 +39,14 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Nat primitiveT.translate-nat] [#.Int primitiveT.translate-int] [#.Rev primitiveT.translate-rev] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~ singleton)]) diff --git a/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux index 3652dfcfd..8bc7da848 100644 --- a/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux @@ -5,8 +5,8 @@ [//] (// [".T" runtime])) -(def: #export translate-bool - (-> Bool (Meta Expression)) +(def: #export translate-bit + (-> Bit (Meta Expression)) (|>> r.bool meta/wrap)) (def: #export translate-int diff --git a/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux index 9cab92115..cf0b87d78 100644 --- a/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux @@ -45,7 +45,7 @@ [//.int-low-field (r.int low)])))) (def: (flag value) - (-> Bool Expression) + (-> Bit Expression) (if value (r.string "") r.null)) @@ -57,7 +57,7 @@ [//.variant-value-field value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (r.int (.int tag)) (flag last?) value)) diff --git a/new-luxc/source/luxc/lang/translation/r/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/r/structure.jvm.lux index bfe0a40a6..e9a528d2b 100644 --- a/new-luxc/source/luxc/lang/translation/r/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (r.list elemsT+))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux index 2cce1abf5..d83a5cd0a 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux @@ -30,7 +30,7 @@ (ruby.return! bodyO))))))) (def: #export (translate-record-get translate valueS path) - (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bool]) + (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List [Nat Bit]) (Meta Expression)) (do macro.Monad<Meta> [valueO (translate valueS)] @@ -108,7 +108,7 @@ (meta/wrap (ruby.when! (ruby.not (ruby.= (|> value <format>) cursor-top)) (ruby.raise pm-error)))) ([#.Int ruby.int] - [#.Bool ruby.bool] + [#.Bit ruby.bool] [#.Frac ruby.float] [#.Text ruby.string]) diff --git a/new-luxc/source/luxc/lang/translation/ruby/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/expression.jvm.lux index 6d829f81c..e68cf8a8f 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/expression.jvm.lux @@ -41,12 +41,12 @@ (^template [<tag> <generator>] [_ (<tag> value)] (<generator> value)) - ([#.Bool primitiveT.translate-bool] + ([#.Bit primitiveT.translate-bit] [#.Int primitiveT.translate-int] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) - (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bool last?)]) (~ valueS))) + (^code ((~ [_ (#.Nat tag)]) (~ [_ (#.Bit last?)]) (~ valueS))) (structureT.translate-variant translate tag last? valueS) (^code [(~+ members)]) diff --git a/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux index f84c700d4..cc5e5752e 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux @@ -6,13 +6,13 @@ [macro "meta/" Monad<Meta>]) (luxc (lang (host [ruby #+ Ruby Expression Statement])))) -(def: #export translate-bool - (-> Bool (Meta Expression)) - (|>> %b meta/wrap)) +(def: #export translate-bit + (-> Bit (Meta Expression)) + (|>> ruby.bool meta/wrap)) (def: #export translate-int (-> Int (Meta Expression)) - (|>> %i meta/wrap)) + (|>> ruby.int meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux index 7e94101ff..9d0d0f890 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux @@ -17,7 +17,7 @@ (def: #export unit Expression (%t //.unit)) (def: (flag value) - (-> Bool Ruby) + (-> Bit Ruby) (if value (ruby.string "") ruby.nil)) @@ -29,7 +29,7 @@ [(ruby.string //.variant-value-field) value]))) (def: #export (variant tag last? value) - (-> Nat Bool Expression Expression) + (-> Nat Bit Expression Expression) (variant' (%i (.int tag)) (flag last?) value)) (def: #export none diff --git a/new-luxc/source/luxc/lang/translation/ruby/structure.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/structure.jvm.lux index 5bf7c9e8b..2a1f81d37 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/structure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/structure.jvm.lux @@ -25,7 +25,7 @@ (wrap (ruby.array elemsT+))))) (def: #export (translate-variant translate tag tail? valueS) - (-> (-> Synthesis (Meta Expression)) Nat Bool Synthesis (Meta Expression)) + (-> (-> Synthesis (Meta Expression)) Nat Bit Synthesis (Meta Expression)) (do macro.Monad<Meta> [valueT (translate valueS)] (wrap (runtimeT.variant tag tail? valueT)))) diff --git a/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux index cbdd43d94..ae4a4151a 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux @@ -73,7 +73,7 @@ (#e.Success output))))) (def: (variant tag flag value) - (-> Nat Bool Any Any) + (-> Nat Bit Any Any) [(Long::intValue [] (:coerce Long tag)) (: Any (if flag diff --git a/new-luxc/test/test/luxc/lang/analysis/host.jvm.lux b/new-luxc/test/test/luxc/lang/analysis/host.jvm.lux index 02574a31a..1e6cafdfc 100644 --- a/new-luxc/test/test/luxc/lang/analysis/host.jvm.lux +++ b/new-luxc/test/test/luxc/lang/analysis/host.jvm.lux @@ -35,7 +35,7 @@ (do-template [<name> <success> <failure>] [(def: (<name> procedure params output-type) - (-> Text (List Code) Type Bool) + (-> Text (List Code) Type Bit) (|> (do Monad<Meta> [## runtime-bytecode @runtime.translate ] @@ -56,7 +56,7 @@ (do-template [<name> <success> <failure>] [(def: (<name> syntax output-type) - (-> Code Type Bool) + (-> Code Type Bit) (|> (do Monad<Meta> [## runtime-bytecode @runtime.translate ] @@ -365,7 +365,7 @@ (test "jvm object null?" (success "jvm object null?" (list boxedC) - Bool)) + Bit)) (test "jvm object synchronized" (success "jvm object synchronized" (list boxedC boxedC) @@ -388,18 +388,18 @@ (success "jvm object instance?" (list (code.text boxed) boxedC) - Bool)) + Bit)) (test "jvm object instance? (lineage)" (success "jvm object instance?" (list (' "java.lang.Object") boxedC) - Bool)) + Bit)) (test "jvm object instance? (no lineage)" (or (text/= "java.lang.Object" boxed) (failure "jvm object instance?" (list (code.text boxed) !boxedC) - Bool))) + Bit))) )))) (context: "Member [Static Field]." diff --git a/new-luxc/test/test/luxc/lang/analysis/type.lux b/new-luxc/test/test/luxc/lang/analysis/type.lux index a026f8df2..b2d819ec5 100644 --- a/new-luxc/test/test/luxc/lang/analysis/type.lux +++ b/new-luxc/test/test/luxc/lang/analysis/type.lux @@ -3,7 +3,7 @@ (lux [io] (control [monad #+ do] pipe) - (data [bool "bool/" Eq<Bool>] + (data [bit "bit/" Eq<Bit>] [text "text/" Eq<Text>] (text format ["l" lexer]) @@ -36,7 +36,7 @@ <type> (<code> value)]))] - [r.bool (+0 "#Bool" (+0)) code.bool] + [r.bit (+0 "#Bit" (+0)) code.bit] [r.nat (+0 "#Nat" (+0)) code.nat] [r.int (+0 "#Int" (+0)) code.int] [r.rev (+0 "#Rev" (+0)) code.rev] @@ -65,7 +65,7 @@ (^template [<tag> <test>] [[_ (<tag> expected)] [_ (<tag> actual)]] (<test> expected actual)) - ([#.Bool bool/=] + ([#.Bit bit/=] [#.Nat n/=] [#.Int i/=] [#.Rev r/=] diff --git a/new-luxc/test/test/luxc/lang/synthesis/loop.lux b/new-luxc/test/test/luxc/lang/synthesis/loop.lux index 23641780f..af818255b 100644 --- a/new-luxc/test/test/luxc/lang/synthesis/loop.lux +++ b/new-luxc/test/test/luxc/lang/synthesis/loop.lux @@ -2,7 +2,7 @@ lux (lux [io] (control [monad #+ do]) - (data [bool "bool/" Eq<Bool>] + (data [bit "bit/" Eq<Bit>] [number] (coll [list "list/" Functor<List> Fold<List>] (set ["set" unordered])) @@ -18,7 +18,7 @@ (// common)) (def: (does-recursion? arity exprS) - (-> ls.Arity ls.Synthesis Bool) + (-> ls.Arity ls.Synthesis Bit) (loop [exprS exprS] (case exprS (^ [_ (#.Form (list [_ (#.Text "lux case")] inputS pathS))]) @@ -68,19 +68,19 @@ (wrap (` ("lux case" (~ inputA) (~ (code.record (list.zip2 tests bodies)))))))) (r.either (do r.Monad<Random> - [valueS r.bool + [valueS r.bit output' (gen-body (n/inc arity) output)] - (wrap (` ("lux case" (~ (code.bool valueS)) + (wrap (` ("lux case" (~ (code.bit valueS)) {("lux case bind" (~ (code.nat arity))) (~ output')})))) (do r.Monad<Random> - [valueS r.bool - then|else r.bool + [valueS r.bit + then|else r.bit output' (gen-body arity output) #let [thenA (if then|else output' (' [])) elseA (if (not then|else) output' (' []))]] - (wrap (` ("lux case" (~ (code.bool valueS)) - {(~ (code.bool then|else)) (~ thenA) - (~ (code.bool (not then|else))) (~ elseA)}))))) + (wrap (` ("lux case" (~ (code.bit valueS)) + {(~ (code.bit then|else)) (~ thenA) + (~ (code.bit (not then|else))) (~ elseA)}))))) )) (def: (make-function arity body) @@ -90,14 +90,14 @@ _ (` ("lux function" [] (~ (make-function (n/dec arity) body)))))) (def: gen-recursion - (r.Random [Bool Nat la.Analysis]) + (r.Random [Bit Nat la.Analysis]) (do r.Monad<Random> [arity (|> r.nat (:: @ map (|>> (n/% +10) (n/max +1)))) - recur? r.bool + recur? r.bit outputS (if recur? (wrap (la.apply (list.repeat arity (' [])) (la.var 0))) (do @ - [plus-or-minus? r.bool + [plus-or-minus? r.bit how-much (|> r.nat (:: @ map (|>> (n/% arity) (n/max +1)))) #let [shift (if plus-or-minus? n/+ n/-)]] (wrap (la.apply (list.repeat (shift how-much arity) (' [])) (la.var 0))))) @@ -105,17 +105,17 @@ (wrap [recur? arity (make-function arity bodyS)]))) (def: gen-loop - (r.Random [Bool Nat la.Analysis]) + (r.Random [Bit Nat la.Analysis]) (do r.Monad<Random> [arity (|> r.nat (:: @ map (|>> (n/% +10) (n/max +1)))) - recur? r.bool - self-ref? r.bool + recur? r.bit + self-ref? r.bit #let [selfA (la.var 0) argA (if self-ref? selfA (' []))] outputS (if recur? (wrap (la.apply (list.repeat arity argA) selfA)) (do @ - [plus-or-minus? r.bool + [plus-or-minus? r.bit how-much (|> r.nat (:: @ map (|>> (n/% arity) (n/max +1)))) #let [shift (if plus-or-minus? n/+ n/-)]] (wrap (la.apply (list.repeat (shift how-much arity) (' [])) selfA)))) @@ -135,7 +135,7 @@ (^ [_ (#.Form (list [_ (#.Text "lux function")] [_ (#.Nat _arity)] [_ (#.Tuple _env)] _body))]) (|> _body (does-recursion? arity) - (bool/= prediction) + (bit/= prediction) (and (n/= arity _arity))) _ diff --git a/new-luxc/test/test/luxc/lang/translation/case.lux b/new-luxc/test/test/luxc/lang/translation/case.lux index a16715729..20d072651 100644 --- a/new-luxc/test/test/luxc/lang/translation/case.lux +++ b/new-luxc/test/test/luxc/lang/translation/case.lux @@ -14,7 +14,7 @@ (def: struct-limit Nat +10) (def: (tail? size idx) - (-> Nat Nat Bool) + (-> Nat Nat Bit) (n/= (n/dec size) idx)) (def: gen-case @@ -31,7 +31,7 @@ (wrap [(<synth> value) (<path> value)]))] - [r.bool //synthesis.bool //synthesis.path/bool] + [r.bit //synthesis.bit //synthesis.path/bit] [r.int //synthesis.i64 //synthesis.path/i64] [r.frac //synthesis.f64 //synthesis.path/f64] [(r.unicode +5) //synthesis.text //synthesis.path/text])) @@ -51,7 +51,7 @@ [size (|> r.nat (:: @ map (|>> (n/% struct-limit) (n/max +2)))) idx (|> r.nat (:: @ map (n/% size))) [subS subP] gen-case - #let [caseS (` ((~ (code.nat idx)) (~ (code.bool (tail? size idx))) (~ subS))) + #let [caseS (` ((~ (code.nat idx)) (~ (code.bit (tail? size idx))) (~ subS))) caseP (` ("lux case seq" (~ (if (tail? size idx) (` ("lux case variant right" (~ (code.nat idx)))) @@ -74,7 +74,7 @@ ("lux case seq" ("lux case bind" +0) ("lux case exec" false)))))) (case> (#e.Success valueT) - (:coerce Bool valueT) + (:coerce Bit valueT) (#e.Error error) (exec (log! error) diff --git a/new-luxc/test/test/luxc/lang/translation/common.lux b/new-luxc/test/test/luxc/lang/translation/common.lux index 0e2d66503..9aba56d6b 100644 --- a/new-luxc/test/test/luxc/lang/translation/common.lux +++ b/new-luxc/test/test/luxc/lang/translation/common.lux @@ -6,7 +6,7 @@ (data text/format [bit] ["e" error] - [bool "bool/" Eq<Bool>] + [bit "bit/" Eq<Bit>] [text "text/" Eq<Text>] [number "int/" Number<Int> "frac/" Number<Frac> Interval<Frac>] (coll ["a" array] @@ -100,8 +100,8 @@ ["lux int *" i/* Int i/=] ["lux int /" i// Int i/=] ["lux int %" i/% Int i/=] - ["lux int =" i/= Bool bool/=] - ["lux int <" i/< Bool bool/=] + ["lux int =" i/= Bit bit/=] + ["lux int <" i/< Bit bit/=] )) )))) @@ -124,8 +124,8 @@ ["lux frac *" f/* Frac f/=] ["lux frac /" f// Frac f/=] ["lux frac %" f/% Frac f/=] - ["lux frac =" f/= Bool bool/=] - ["lux frac <" f/< Bool bool/=] + ["lux frac =" f/= Bit bit/=] + ["lux frac <" f/< Bit bit/=] )] ($_ seq <binary> @@ -202,20 +202,20 @@ (test "Can compare texts for equality." (and (|> (run (` ("lux text =" (~ sample0S) (~ sample0S)))) (case> (#e.Success valueV) - (:coerce Bool valueV) + (:coerce Bit valueV) _ false)) (|> (run (` ("lux text =" (~ sample0S) (~ sample1S)))) (case> (#e.Success valueV) - (not (:coerce Bool valueV)) + (not (:coerce Bit valueV)) _ false)))) (test "Can compare texts for order." (|> (run (` ("lux text <" (~ sample1S) (~ sample0S)))) (case> (#e.Success valueV) - (:coerce Bool valueV) + (:coerce Bit valueV) _ false))) @@ -423,7 +423,7 @@ [("lux atom compare-and-swap" (1) (0) (~ postS)) ("lux atom read" (1))])))) (case> (#e.Success valueV) - (let [[swapped? current-value] (:coerce [Bool Nat] valueV)] + (let [[swapped? current-value] (:coerce [Bit Nat] valueV)] (and swapped? (n/= post current-value))) @@ -435,7 +435,7 @@ [("lux atom compare-and-swap" (1) (~ postS) (~ postS)) ("lux atom read" (1))])))) (case> (#e.Success valueV) - (let [[swapped? current-value] (:coerce [Bool Nat] valueV)] + (let [[swapped? current-value] (:coerce [Bit Nat] valueV)] (and (not swapped?) (n/= pre current-value))) diff --git a/new-luxc/test/test/luxc/lang/translation/js.lux b/new-luxc/test/test/luxc/lang/translation/js.lux index 6f4fb572d..42947b580 100644 --- a/new-luxc/test/test/luxc/lang/translation/js.lux +++ b/new-luxc/test/test/luxc/lang/translation/js.lux @@ -20,15 +20,15 @@ (|> r.nat (:: r.Functor<Random> map (|>> (n/% +91) (n/max +65))))) (def: (test-primitive-identity synthesis) - (-> Synthesis Bool) + (-> Synthesis Bit) (|> (run-js (` ("lux is" (~ synthesis) (~ synthesis)))) (case> (#e.Success valueV) - (:coerce Bool valueV) + (:coerce Bit valueV) _ false))) -(type: Check (-> (e.Error Any) Bool)) +(type: Check (-> (e.Error Any) Bit)) (do-template [<name> <type> <pre> <=>] [(def: (<name> angle) diff --git a/new-luxc/test/test/luxc/lang/translation/jvm.lux b/new-luxc/test/test/luxc/lang/translation/jvm.lux index 6652c8484..34f1af508 100644 --- a/new-luxc/test/test/luxc/lang/translation/jvm.lux +++ b/new-luxc/test/test/luxc/lang/translation/jvm.lux @@ -6,7 +6,7 @@ (data [maybe] ["e" error] [bit] - [bool "bool/" Eq<Bool>] + [bit "bit/" Eq<Bit>] [number "int/" Number<Int> Codec<Text,Int>] [text "text/" Eq<Text>] text/format @@ -242,8 +242,8 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success valueT) - (bool/= (<reference> param subject) - (:coerce Bool valueT)) + (bit/= (<reference> param subject) + (:coerce Bit valueT)) (#e.Error error) false)))] @@ -279,7 +279,7 @@ (do @ [size (|> r.nat (:: @ map (|>> (n/% +10) (n/max +1)))) idx (|> r.nat (:: @ map (n/% size))) - valueZ r.bool + valueZ r.bit valueB gen-int valueS gen-int valueI gen-int @@ -303,7 +303,7 @@ (#e.Error error) false)))] - ["boolean" Bool valueZ bool/= (code.bool valueZ) + ["boolean" Bit valueZ bit/= (code.bit valueZ) id] ["byte" Int valueB i/= (|> (code.int valueB) (~) "jvm convert long-to-byte" (`)) "jvm convert byte-to-long"] @@ -327,7 +327,7 @@ (do @ [size (|> r.nat (:: @ map (|>> (n/% +10) (n/max +1)))) idx (|> r.nat (:: @ map (n/% size))) - valueZ r.bool + valueZ r.bit valueB gen-int valueS gen-int valueI gen-int @@ -401,7 +401,7 @@ (def: instances (List [Text (r.Random ls.Synthesis)]) - (let [gen-boolean (|> r.bool (:: r.Functor<Random> map code.bool)) + (let [gen-boolean (|> r.bit (:: r.Functor<Random> map code.bit)) gen-integer (|> r.int (:: r.Functor<Random> map code.int)) gen-double (|> r.frac (:: r.Functor<Random> map code.frac)) gen-string (|> (r.text +5) (:: r.Functor<Random> map code.text))] @@ -436,7 +436,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:coerce Bool outputT) + (:coerce Bit outputT) (#e.Error error) false))) @@ -447,7 +447,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (not (:coerce Bool outputT)) + (not (:coerce Bit outputT)) (#e.Error error) false))) @@ -500,7 +500,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:coerce Bool outputT) + (:coerce Bit outputT) (#e.Error error) false))) @@ -610,7 +610,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:coerce Bool outputT) + (:coerce Bit outputT) (#e.Error error) false))) @@ -623,7 +623,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:coerce Bool outputT) + (:coerce Bit outputT) (#e.Error error) false))) diff --git a/new-luxc/test/test/luxc/lang/translation/primitive.lux b/new-luxc/test/test/luxc/lang/translation/primitive.lux index 43886e197..a58b3b97e 100644 --- a/new-luxc/test/test/luxc/lang/translation/primitive.lux +++ b/new-luxc/test/test/luxc/lang/translation/primitive.lux @@ -5,7 +5,7 @@ pipe) (data text/format ["e" error] - [bool "bool/" Eq<Bool>] + [bit "bit/" Eq<Bit>] [text "text/" Eq<Text>]) ["r" math/random] (lang ["//." synthesis]) @@ -16,7 +16,7 @@ (def: (spec run) (-> Runner Test) (do r.Monad<Random> - [%bool% r.bool + [%bit% r.bit %nat% r.nat %int% r.int %rev% r.rev @@ -33,7 +33,7 @@ (exec (log! error) false))))] - ["bool" Bool //synthesis.bool %bool% bool/=] + ["bit" Bit //synthesis.bit %bit% bit/=] ["int" Int //synthesis.i64 %int% i/=] ["frac" Frac //synthesis.f64 %frac% f/=] ["text" Text //synthesis.text %text% text/=])) diff --git a/new-luxc/test/test/luxc/lang/translation/structure.lux b/new-luxc/test/test/luxc/lang/translation/structure.lux index df1350395..17068bb72 100644 --- a/new-luxc/test/test/luxc/lang/translation/structure.lux +++ b/new-luxc/test/test/luxc/lang/translation/structure.lux @@ -5,7 +5,7 @@ pipe) (data ["e" error] [maybe] - [bool "bool/" Eq<Bool>] + [bit "bit/" Eq<Bit>] [text "text/" Eq<Text>] text/format (coll [array] @@ -48,7 +48,7 @@ #let [last?-in (n/= (n/dec num-tags) tag-in)] value-in r.int] (test "Can translate variant." - (|> (run (` ((~ (code.nat tag-in)) (~ (code.bool last?-in)) (~ (code.int value-in))))) + (|> (run (` ((~ (code.nat tag-in)) (~ (code.bit last?-in)) (~ (code.int value-in))))) (case> (#e.Success valueT) (let [valueT (:coerce (Array Any) valueT)] (and (n/= +3 (array.size valueT)) diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index ecf5584d6..2f2649758 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -65,16 +65,16 @@ [dummy-cursor (+5 "A potentially empty list of values.")]] (+0)))))))]) -("lux def" Bool - (+10 ["lux" "Bool"] - (+0 "#Bool" #Nil)) +("lux def" Bit + (+10 ["lux" "Bit"] + (+0 "#Bit" #Nil)) [dummy-cursor (+10 (#Cons [[dummy-cursor (+7 ["lux" "type?"])] [dummy-cursor (+0 true)]] (#Cons [[dummy-cursor (+7 ["lux" "export?"])] [dummy-cursor (+0 true)]] (#Cons [[dummy-cursor (+7 ["lux" "doc"])] - [dummy-cursor (+5 "Your standard, run-of-the-mill boolean values.")]] + [dummy-cursor (+5 "Your standard, run-of-the-mill boolean values (as bits).")]] #Nil))))]) ("lux def" I64 @@ -306,7 +306,7 @@ #Nil))))))]) ## (type: (Code' w) -## (#Bool Bool) +## (#Bit Bit) ## (#Nat Nat) ## (#Int Int) ## (#Rev Rev) @@ -322,8 +322,8 @@ ({Code ({Code-List (#UnivQ #Nil - (#Sum ## "lux.Bool" - Bool + (#Sum ## "lux.Bit" + Bit (#Sum ## "lux.Nat" Nat (#Sum ## "lux.Int" @@ -352,7 +352,7 @@ (#Parameter +1))))) [dummy-cursor (+10 (#Cons [[dummy-cursor (+7 ["lux" "tags"])] - [dummy-cursor (+9 (#Cons [dummy-cursor (+5 "Bool")] + [dummy-cursor (+9 (#Cons [dummy-cursor (+5 "Bit")] (#Cons [dummy-cursor (+5 "Nat")] (#Cons [dummy-cursor (+5 "Int")] (#Cons [dummy-cursor (+5 "Rev")] @@ -383,9 +383,9 @@ (#Record (#Cons [[dummy-cursor (#Tag ["lux" "doc"])] [dummy-cursor (#Text "The type of Code nodes for Lux syntax.")]] (#Cons [[dummy-cursor (#Tag ["lux" "type?"])] - [dummy-cursor (#Bool true)]] + [dummy-cursor (#Bit true)]] (#Cons [[dummy-cursor (#Tag ["lux" "export?"])] - [dummy-cursor (#Bool true)]] + [dummy-cursor (#Bit true)]] #Nil))))]) ("lux def" _ann @@ -396,9 +396,9 @@ [dummy-cursor data])) [dummy-cursor (#Record #Nil)]) -("lux def" bool$ - ("lux check" (#Function Bool Code) - ([_ value] (_ann (#Bool value)))) +("lux def" bit$ + ("lux check" (#Function Bit Code) + ([_ value] (_ann (#Bit value)))) [dummy-cursor (#Record #Nil)]) ("lux def" nat$ @@ -459,16 +459,16 @@ ("lux def" default-def-meta-exported ("lux check" (#Apply (#Product Code Code) List) (#Cons [(tag$ ["lux" "type?"]) - (bool$ true)] + (bit$ true)] (#Cons [(tag$ ["lux" "export?"]) - (bool$ true)] + (bit$ true)] #Nil))) (record$ #Nil)) ("lux def" default-def-meta-unexported ("lux check" (#Apply (#Product Code Code) List) (#Cons [(tag$ ["lux" "type?"]) - (bool$ true)] + (bit$ true)] #Nil)) (record$ #Nil)) @@ -585,8 +585,8 @@ ## #module-aliases (List [Text Text]) ## #definitions (List [Text Definition]) ## #imports (List Text) -## #tags (List [Text [Nat (List Ident) Bool Type]]) -## #types (List [Text [(List Ident) Bool Type]]) +## #tags (List [Text [Nat (List Ident) Bit Type]]) +## #types (List [Text [(List Ident) Bit Type]]) ## #module-annotations (Maybe Code) ## #module-state Module-State}) ("lux def" Module @@ -603,13 +603,13 @@ (#Apply (#Product Text (#Product Nat (#Product (#Apply Ident List) - (#Product Bool + (#Product Bit Type)))) List) (#Product ## "lux.types" (#Apply (#Product Text (#Product (#Apply Ident List) - (#Product Bool + (#Product Bit Type))) List) (#Product ## "lux.module-annotations" @@ -808,7 +808,7 @@ ("lux def" default-macro-meta ("lux check" (#Apply (#Product Code Code) List) (#Cons [(tag$ ["lux" "macro?"]) - (bool$ true)] + (bit$ true)] #Nil)) (record$ #Nil)) @@ -878,13 +878,13 @@ ("lux check" (#Function Text Code) ([_ tag] (tuple$ (#Cons [(meta-code ["lux" "Tag"] (tuple$ (#Cons (text$ "lux") (#Cons (text$ tag) #Nil)))) - (#Cons [(meta-code ["lux" "Bool"] (bool$ true)) + (#Cons [(meta-code ["lux" "Bit"] (bit$ true)) #Nil])])))) (record$ #Nil)) ("lux def" export-meta ("lux check" (#Product Code Code) - [(tag$ ["lux" "export?"]) (bool$ true)]) + [(tag$ ["lux" "export?"]) (bit$ true)]) (record$ #Nil)) ("lux def" export?-meta @@ -1080,7 +1080,7 @@ (def:'' (text/= x y) #Nil - (#Function Text (#Function Text Bool)) + (#Function Text (#Function Text Bit)) ("lux text =" x y)) (def:'' (get-rep key env) @@ -1369,7 +1369,7 @@ (macro:' #export (& tokens) (#Cons [(tag$ ["lux" "doc"]) (text$ "## Tuple types: - (& Text Int Bool) + (& Text Int Bit) ## Any. (&)")] @@ -1386,7 +1386,7 @@ (macro:' #export (| tokens) (#Cons [(tag$ ["lux" "doc"]) (text$ "## Variant types: - (| Text Int Bool) + (| Text Int Bit) ## Nothing. (|)")] @@ -1506,7 +1506,7 @@ (def:''' (any? p xs) #Nil (All [a] - (-> (-> a Bool) ($' List a) Bool)) + (-> (-> a Bit) ($' List a) Bit)) ({#Nil false @@ -1716,7 +1716,7 @@ (macro:' #export (if tokens) (list [(tag$ ["lux" "doc"]) - (text$ "Picks which expression to evaluate based on a boolean test value. + (text$ "Picks which expression to evaluate based on a bit test value. (if true \"Oh, yeah!\" @@ -1724,8 +1724,8 @@ => \"Oh, yeah!\"")]) ({(#Cons test (#Cons then (#Cons else #Nil))) - (return (list (form$ (list (record$ (list [(bool$ true) then] - [(bool$ false) else])) + (return (list (form$ (list (record$ (list [(bit$ true) then] + [(bit$ false) else])) test)))) _ @@ -1833,7 +1833,7 @@ (def:''' (splice replace? untemplate elems) #Nil - (-> Bool (-> Code ($' Meta Code)) ($' List Code) ($' Meta Code)) + (-> Bit (-> Code ($' Meta Code)) ($' List Code) ($' Meta Code)) ({true ({#Nil (return (tag$ ["lux" "Nil"])) @@ -1878,9 +1878,9 @@ (def:''' (untemplate replace? subst token) #Nil - (-> Bool Text Code ($' Meta Code)) - ({[_ [_ (#Bool value)]] - (return (wrap-meta (form$ (list (tag$ ["lux" "Bool"]) (bool$ value))))) + (-> Bit Text Code ($' Meta Code)) + ({[_ [_ (#Bit value)]] + (return (wrap-meta (form$ (list (tag$ ["lux" "Bit"]) (bit$ value))))) [_ [_ (#Nat value)]] (return (wrap-meta (form$ (list (tag$ ["lux" "Nat"]) (nat$ value))))) @@ -2188,13 +2188,13 @@ (def:''' (every? p xs) #Nil (All [a] - (-> (-> a Bool) ($' List a) Bool)) + (-> (-> a Bit) ($' List a) Bit)) (list/fold (function' [_2 _1] (if _1 (p _2) false)) true xs)) (def:''' #export (n/= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Nat(ural) equivalence.")]) - (-> Nat Nat Bool) + (-> Nat Nat Bit) ("lux i64 =" test subject)) (def:''' (high-bits value) @@ -2217,7 +2217,7 @@ (def:''' #export (n/< test subject) (list [(tag$ ["lux" "doc"]) (text$ "Nat(ural) less-than.")]) - (-> Nat Nat Bool) + (-> Nat Nat Bit) (let' [testH (high-bits test) subjectH (high-bits subject)] (if ("lux int <" subjectH testH) @@ -2231,7 +2231,7 @@ (def:''' #export (n/<= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Nat(ural) less-than-equal.")]) - (-> Nat Nat Bool) + (-> Nat Nat Bit) (if (n/< test subject) true ("lux i64 =" test subject))) @@ -2239,13 +2239,13 @@ (def:''' #export (n/> test subject) (list [(tag$ ["lux" "doc"]) (text$ "Nat(ural) greater-than.")]) - (-> Nat Nat Bool) + (-> Nat Nat Bit) (n/< subject test)) (def:''' #export (n/>= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Nat(ural) greater-than-equal.")]) - (-> Nat Nat Bool) + (-> Nat Nat Bit) (if (n/< subject test) true ("lux i64 =" test subject))) @@ -2284,20 +2284,20 @@ (def:''' #export (r/= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Rev(olution) equivalence.")]) - (-> Rev Rev Bool) + (-> Rev Rev Bit) ("lux i64 =" test subject)) (def:''' #export (r/< test subject) (list [(tag$ ["lux" "doc"]) (text$ "Rev(olution) less-than.")]) - (-> Rev Rev Bool) + (-> Rev Rev Bit) (n/< ("lux coerce" Nat test) ("lux coerce" Nat subject))) (def:''' #export (r/<= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Rev(olution) less-than-equal.")]) - (-> Rev Rev Bool) + (-> Rev Rev Bit) (if (n/< ("lux coerce" Nat test) ("lux coerce" Nat subject)) true @@ -2306,13 +2306,13 @@ (def:''' #export (r/> test subject) (list [(tag$ ["lux" "doc"]) (text$ "Rev(olution) greater-than.")]) - (-> Rev Rev Bool) + (-> Rev Rev Bit) (r/< subject test)) (def:''' #export (r/>= test subject) (list [(tag$ ["lux" "doc"]) (text$ "Rev(olution) greater-than-equal.")]) - (-> Rev Rev Bool) + (-> Rev Rev Bit) (if (r/< subject test) true ("lux i64 =" test subject))) @@ -2323,19 +2323,19 @@ [(def:''' #export (<eq-name> test subject) (list [(tag$ ["lux" "doc"]) (text$ <eq-doc>)]) - (-> <type> <type> Bool) + (-> <type> <type> Bit) (<eq-proc> subject test)) (def:''' #export (<lt-name> test subject) (list [(tag$ ["lux" "doc"]) (text$ <<-doc>)]) - (-> <type> <type> Bool) + (-> <type> <type> Bit) (<lt-proc> subject test)) (def:''' #export (<lte-name> test subject) (list [(tag$ ["lux" "doc"]) (text$ <<=-doc>)]) - (-> <type> <type> Bool) + (-> <type> <type> Bit) (if (<lt-proc> subject test) true (<eq-proc> subject test))) @@ -2343,13 +2343,13 @@ (def:''' #export (<gt-name> test subject) (list [(tag$ ["lux" "doc"]) (text$ <>-doc>)]) - (-> <type> <type> Bool) + (-> <type> <type> Bit) (<lt-proc> test subject)) (def:''' #export (<gte-name> test subject) (list [(tag$ ["lux" "doc"]) (text$ <>=-doc>)]) - (-> <type> <type> Bool) + (-> <type> <type> Bit) (if (<lt-proc> test subject) true (<eq-proc> subject test)))] @@ -2536,9 +2536,9 @@ [f/max Frac f/> "Frac(tion) minimum."] ) -(def:''' (bool/encode x) +(def:''' (bit/encode x) #Nil - (-> Bool Text) + (-> Bit Text) (if x "true" "false")) (def:''' (digit-to-text digit) @@ -2600,17 +2600,17 @@ (def:''' (multiple? div n) #Nil - (-> Nat Nat Bool) + (-> Nat Nat Bit) (|> n (n/% div) (n/= +0))) (def:''' #export (not x) (list [(tag$ ["lux" "doc"]) - (text$ "## Boolean negation. + (text$ "## Bit negation. (not true) => false (not false) => true")]) - (-> Bool Bool) + (-> Bit Bit) (if x false true)) (def:''' (find-macro' modules current-module module name) @@ -2623,8 +2623,8 @@ gdef (let' [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} ("lux check" Module $module)] (get name bindings))] (let' [[def-type def-meta def-value] ("lux check" Definition gdef)] - ({(#Some [_ (#Bool true)]) - ({(#Some [_ (#Bool true)]) + ({(#Some [_ (#Bit true)]) + ({(#Some [_ (#Bit true)]) (#Some ("lux coerce" Macro def-value)) _ @@ -2672,7 +2672,7 @@ (def:''' (macro? ident) #Nil - (-> Ident ($' Meta Bool)) + (-> Ident ($' Meta Bit)) (do Monad<Meta> [ident (normalize ident) output (find-macro ident)] @@ -2858,7 +2858,7 @@ (def:''' (empty? xs) #Nil - (All [a] (-> ($' List a) Bool)) + (All [a] (-> ($' List a) Bit)) ({#Nil true _ false} xs)) @@ -3030,8 +3030,8 @@ (def:' (code-to-text code) (-> Code Text) - ({[_ (#Bool value)] - (bool/encode value) + ({[_ (#Bit value)] + (bit/encode value) [_ (#Nat value)] (nat/encode value) @@ -3171,7 +3171,7 @@ #Sunday) (def: (weekend? day) - (-> Weekday Bool) + (-> Weekday Bit) (case day (^or #Saturday #Sunday) true @@ -3193,7 +3193,7 @@ (fail "Wrong syntax for ^or"))) (def:' (symbol? code) - (-> Code Bool) + (-> Code Bit) (case code [_ (#Symbol _)] true @@ -3263,8 +3263,8 @@ (def:' (process-def-meta-value code) (-> Code Code) (case code - [_ (#Bool value)] - (meta-code ["lux" "Bool"] (bool$ value)) + [_ (#Bit value)] + (meta-code ["lux" "Bit"] (bit$ value)) [_ (#Nat value)] (meta-code ["lux" "Nat"] (nat$ value)) @@ -3330,7 +3330,7 @@ args))]})) (def:' (export^ tokens) - (-> (List Code) [Bool (List Code)]) + (-> (List Code) [Bit (List Code)]) (case tokens (#Cons [_ (#Tag [_ "export"])] tokens') [true tokens'] @@ -3339,7 +3339,7 @@ [false tokens])) (def:' (export ?) - (-> Bool (List Code)) + (-> Bit (List Code)) (if ? (list (' #export)) (list))) @@ -3481,13 +3481,13 @@ (signature: #export (Ord a) (: (Equivalence a) eq) - (: (-> a a Bool) + (: (-> a a Bit) <) - (: (-> a a Bool) + (: (-> a a Bit) <=) - (: (-> a a Bool) + (: (-> a a Bit) >) - (: (-> a a Bool) + (: (-> a a Bit) >=))"} (let [[exported? tokens'] (export^ tokens) ?parts (: (Maybe [Ident (List Code) Code (List Code)]) @@ -3792,7 +3792,7 @@ (find-module module-name))) (def: (resolve-tag [module name]) - (-> Ident (Meta [Nat (List Ident) Bool Type])) + (-> Ident (Meta [Nat (List Ident) Bit Type])) (do Monad<Meta> [=module (find-module module) #let [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags-table #types types #module-annotations _ #module-state _} =module]] @@ -4180,7 +4180,7 @@ (list/drop (n/- +1 amount) a+'))) (def: (clean-module nested? relative-root module) - (-> Bool Text Text (Meta Text)) + (-> Bit Text Text (Meta Text)) (case (count-ups +0 module) +0 (return (if nested? @@ -4207,7 +4207,7 @@ " Relative Root: " relative-root "\n")))))) (def: (parse-imports nested? relative-root imports) - (-> Bool Text (List Code) (Meta (List Importation))) + (-> Bit Text (List Code) (Meta (List Importation))) (do Monad<Meta> [imports' (monad/map Monad<Meta> (: (-> Code (Meta (List Importation))) @@ -4280,7 +4280,7 @@ (List Text)) (function (_ [name [def-type def-meta def-value]]) (case (get-meta ["lux" "export?"] def-meta) - (#Some [_ (#Bool true)]) + (#Some [_ (#Bit true)]) (list name) _ @@ -4294,7 +4294,7 @@ )) (def: (filter p xs) - (All [a] (-> (-> a Bool) (List a) (List a))) + (All [a] (-> (-> a Bit) (List a) (List a))) (case xs #Nil (list) @@ -4305,7 +4305,7 @@ (filter p xs')))) (def: (is-member? cases name) - (-> (List Text) Text Bool) + (-> (List Text) Text Bit) (let [output (list/fold (function (_ case prev) (or prev (text/= case name))) @@ -4730,7 +4730,7 @@ (return (list (` (function ((~ g!_) (~ g!arg)) (<| (~+ tokens) (~ g!arg)))))))) (def: (imported-by? import-name module-name) - (-> Text Text (Meta Bool)) + (-> Text Text (Meta Bit)) (do Monad<Meta> [module (find-module module-name) #let [{#module-hash _ #module-aliases _ #definitions _ #imports imports #tags _ #types _ #module-annotations _ #module-state _} module]] @@ -5154,7 +5154,7 @@ (^template [<tag>] [[_ _ column] (<tag> _)] column) - ([#Bool] + ([#Bit] [#Nat] [#Int] [#Rev] @@ -5266,7 +5266,7 @@ [(update-cursor new-cursor as-text) (text/compose (cursor-padding baseline prev-cursor new-cursor) as-text)])) - ([#Bool bool/encode] + ([#Bit bit/encode] [#Nat nat/encode] [#Int int/encode] [#Frac frac/encode] @@ -5479,7 +5479,7 @@ (def: (place-tokens label tokens target) (-> Text (List Code) Code (Maybe (List Code))) (case target - (^or [_ (#Bool _)] [_ (#Nat _)] [_ (#Int _)] [_ (#Rev _)] [_ (#Frac _)] [_ (#Text _)] [_ (#Tag _)]) + (^or [_ (#Bit _)] [_ (#Nat _)] [_ (#Int _)] [_ (#Rev _)] [_ (#Frac _)] [_ (#Text _)] [_ (#Tag _)]) (#Some (list target)) [_ (#Symbol [prefix name])] @@ -5525,16 +5525,16 @@ (compare <text> (:: Code/encode show <expr>)) (compare true (:: Equivalence<Code> = <expr> <expr>))] - [(bool true) "true" [_ (#.Bool true)]] - [(bool false) "false" [_ (#.Bool false)]] + [(bit true) "true" [_ (#.Bit true)]] + [(bit false) "false" [_ (#.Bit false)]] [(int 123) "123" [_ (#.Int 123)]] [(frac 123.0) "123.0" [_ (#.Frac 123.0)]] [(text "\n") "\"\\n\"" [_ (#.Text "\n")]] [(tag ["yolo" "lol"]) "#yolo.lol" [_ (#.Tag ["yolo" "lol"])]] [(symbol ["yolo" "lol"]) "yolo.lol" [_ (#.Symbol ["yolo" "lol"])]] - [(form (list (bool true) (int 123))) "(true 123)" (^ [_ (#.Form (list [_ (#.Bool true)] [_ (#.Int 123)]))])] - [(tuple (list (bool true) (int 123))) "[true 123]" (^ [_ (#.Tuple (list [_ (#.Bool true)] [_ (#.Int 123)]))])] - [(record (list [(bool true) (int 123)])) "{true 123}" (^ [_ (#.Record (list [[_ (#.Bool true)] [_ (#.Int 123)]]))])] + [(form (list (bit true) (int 123))) "(true 123)" (^ [_ (#.Form (list [_ (#.Bit true)] [_ (#.Int 123)]))])] + [(tuple (list (bit true) (int 123))) "[true 123]" (^ [_ (#.Tuple (list [_ (#.Bit true)] [_ (#.Int 123)]))])] + [(record (list [(bit true) (int 123)])) "{true 123}" (^ [_ (#.Record (list [[_ (#.Bit true)] [_ (#.Int 123)]]))])] [(local-tag "lol") "#lol" [_ (#.Tag ["" "lol"])]] [(local-symbol "lol") "lol" [_ (#.Symbol ["" "lol"])]] )] @@ -5569,7 +5569,7 @@ (^template [<name>] (#Named ["lux" <name>] _) type) - (["Bool"] + (["Bit"] ["Nat"] ["Int"] ["Rev"] @@ -5591,7 +5591,7 @@ (^template [<name> <type> <wrapper>] (#Named ["lux" <name>] _) (wrap (<wrapper> (:coerce <type> value)))) - (["Bool" Bool bool$] + (["Bit" Bit bit$] ["Nat" Nat nat$] ["Int" Int int$] ["Rev" Rev rev$] @@ -5690,7 +5690,7 @@ _ (#.Left (format "Static part " (%t static) " does not match URI: " uri))) - "Short-cuts can be taken when using boolean tests." + "Short-cuts can be taken when using bit tests." "The example above can be rewritten as..." (case (split (size static) uri) (^multi (#.Some [chunk uri']) (text/= static chunk)) @@ -5738,11 +5738,11 @@ (do-template [<type> <even> <odd> <%> <=> <0> <2>] [(def: #export (<even> n) - (-> <type> Bool) + (-> <type> Bit) (<=> <0> (<%> <2> n))) (def: #export (<odd> n) - (-> <type> Bool) + (-> <type> Bit) (not (<even> n)))] [Nat n/even? n/odd? n/% n/= +0 +2] @@ -5800,7 +5800,7 @@ "This one should fail:" (is? 5 (i/+ 2 3)))} - (All [a] (-> a a Bool)) + (All [a] (-> a a Bit)) ("lux is" reference sample)) (macro: #export (^@ tokens) @@ -5987,7 +5987,7 @@ (#Left "Wrong syntax for char"))) (def: #export (when test f) - (All [a] (-> Bool (-> a a) (-> a a))) + (All [a] (-> Bit (-> a a) (-> a a))) (function (_ value) (if test (f value) @@ -6114,7 +6114,7 @@ (do Monad<Meta> [g!meta (gensym "g!meta")] (wrap (` [(~ g!meta) (<tag> (~ (<gen> value)))])))) - ([#Bool "Bool" bool$] + ([#Bit "Bit" bit$] [#Nat "Nat" nat$] [#Int "Int" int$] [#Rev "Rev" rev$] diff --git a/stdlib/source/lux/concurrency/actor.lux b/stdlib/source/lux/concurrency/actor.lux index 81e873def..570316334 100644 --- a/stdlib/source/lux/concurrency/actor.lux +++ b/stdlib/source/lux/concurrency/actor.lux @@ -92,7 +92,7 @@ self))) (def: #export (alive? actor) - (All [s] (-> (Actor s) Bool)) + (All [s] (-> (Actor s) Bit)) (case (promise.poll (get@ #obituary (:representation actor))) #.None true @@ -102,7 +102,7 @@ (def: #export (send message actor) {#.doc "Communicate with an actor through message passing."} - (All [s] (-> (Message s) (Actor s) (IO Bool))) + (All [s] (-> (Message s) (Actor s) (IO Bit))) (if (alive? actor) (let [entry [message (promise #.None)]] (do Monad<IO> @@ -140,7 +140,7 @@ (def: #export (poison actor) {#.doc "Kills the actor by sending a message that will kill it upon processing, but allows the actor to handle previous messages."} - (All [s] (-> (Actor s) (IO Bool))) + (All [s] (-> (Actor s) (IO Bit))) (send (function (_ state self) (task.throw poisoned [])) actor)) diff --git a/stdlib/source/lux/concurrency/atom.lux b/stdlib/source/lux/concurrency/atom.lux index 8cfc117e4..a06a93b4e 100644 --- a/stdlib/source/lux/concurrency/atom.lux +++ b/stdlib/source/lux/concurrency/atom.lux @@ -19,7 +19,7 @@ {#.doc "Only mutates an atom if you can present it's current value. That guarantees that atom was not updated since you last read from it."} - (All [a] (-> a a (Atom a) (IO Bool))) + (All [a] (-> a a (Atom a) (IO Bit))) (io ("lux atom compare-and-swap" atom current new))) (def: #export (update f atom) diff --git a/stdlib/source/lux/concurrency/frp.lux b/stdlib/source/lux/concurrency/frp.lux index b75e85939..2e1e10d87 100644 --- a/stdlib/source/lux/concurrency/frp.lux +++ b/stdlib/source/lux/concurrency/frp.lux @@ -37,7 +37,7 @@ ## [Values] (def: #export (filter predicate input) - (All [a] (-> (-> a Bool) (Channel a) (Channel a))) + (All [a] (-> (-> a Bit) (Channel a) (Channel a))) (let [output (channel [])] (exec (io.run (listen (function (_ value) (if (predicate value) diff --git a/stdlib/source/lux/concurrency/promise.lux b/stdlib/source/lux/concurrency/promise.lux index c76c4c013..0a03b2c9e 100644 --- a/stdlib/source/lux/concurrency/promise.lux +++ b/stdlib/source/lux/concurrency/promise.lux @@ -31,7 +31,7 @@ (def: #export (resolve value (^:representation promise)) {#.doc "Sets an promise's value if it has not been done yet."} - (All [a] (-> a (Promise a) (IO Bool))) + (All [a] (-> a (Promise a) (IO Bit))) (do io.Monad<IO> [(^@ old [_value _observers]) (atom.read promise)] (case _value @@ -65,7 +65,7 @@ (def: #export (resolved? promise) {#.doc "Checks whether a promise's value has already been resolved."} - (All [a] (-> (Promise a) Bool)) + (All [a] (-> (Promise a) Bit)) (case (poll promise) #.None false diff --git a/stdlib/source/lux/concurrency/semaphore.lux b/stdlib/source/lux/concurrency/semaphore.lux index 0c01e9389..774acf5fa 100644 --- a/stdlib/source/lux/concurrency/semaphore.lux +++ b/stdlib/source/lux/concurrency/semaphore.lux @@ -31,7 +31,7 @@ (promise.promise #.None))] (do io.Monad<IO> [state (atom.read semaphore) - #let [[ready? state'] (: [Bool State] + #let [[ready? state'] (: [Bit State] (case (get@ #open-positions state) +0 [false (update@ #waiting-list (|>> (#.Cons signal)) state)] diff --git a/stdlib/source/lux/concurrency/stm.lux b/stdlib/source/lux/concurrency/stm.lux index e3c797b2d..7af73b68d 100644 --- a/stdlib/source/lux/concurrency/stm.lux +++ b/stdlib/source/lux/concurrency/stm.lux @@ -166,7 +166,7 @@ (wrap [a a']))) (def: (can-commit? tx) - (-> Tx Bool) + (-> Tx Bit) (list.every? (function (_ [_var _original _current]) (is? _original (read!! _var))) tx)) @@ -186,7 +186,7 @@ (atom (promise #.None))) (def: commit-processor-flag - (Atom Bool) + (Atom Bit) (atom false)) (def: (issue-commit commit) diff --git a/stdlib/source/lux/control/concatenative.lux b/stdlib/source/lux/control/concatenative.lux index af86fc527..bed6e9dd5 100644 --- a/stdlib/source/lux/control/concatenative.lux +++ b/stdlib/source/lux/control/concatenative.lux @@ -101,7 +101,7 @@ (def: (prepare command) (-> Code Code) (case command - (^or [_ (#.Bool _)] + (^or [_ (#.Bit _)] [_ (#.Nat _)] [_ (#.Int _)] [_ (#.Rev _)] [_ (#.Frac _)] [_ (#.Text _)] @@ -210,51 +210,51 @@ [Nat Nat n/* .n/*] [Nat Nat n// .n//] [Nat Nat n/% .n/%] - [Nat Bool n/= .n/=] - [Nat Bool n/< .n/<] - [Nat Bool n/<= .n/<=] - [Nat Bool n/> .n/>] - [Nat Bool n/>= .n/>=] + [Nat Bit n/= .n/=] + [Nat Bit n/< .n/<] + [Nat Bit n/<= .n/<=] + [Nat Bit n/> .n/>] + [Nat Bit n/>= .n/>=] [Int Int i/+ .i/+] [Int Int i/- .i/-] [Int Int i/* .i/*] [Int Int i// .i//] [Int Int i/% .i/%] - [Int Bool i/= .i/=] - [Int Bool i/< .i/<] - [Int Bool i/<= .i/<=] - [Int Bool i/> .i/>] - [Int Bool i/>= .i/>=] + [Int Bit i/= .i/=] + [Int Bit i/< .i/<] + [Int Bit i/<= .i/<=] + [Int Bit i/> .i/>] + [Int Bit i/>= .i/>=] [Rev Rev r/+ .r/+] [Rev Rev r/- .r/-] [Rev Rev r/* .r/*] [Rev Rev r// .r//] [Rev Rev r/% .r/%] - [Rev Bool r/= .r/=] - [Rev Bool r/< .r/<] - [Rev Bool r/<= .r/<=] - [Rev Bool r/> .r/>] - [Rev Bool r/>= .r/>=] + [Rev Bit r/= .r/=] + [Rev Bit r/< .r/<] + [Rev Bit r/<= .r/<=] + [Rev Bit r/> .r/>] + [Rev Bit r/>= .r/>=] [Frac Frac f/+ .f/+] [Frac Frac f/- .f/-] [Frac Frac f/* .f/*] [Frac Frac f// .f//] [Frac Frac f/% .f/%] - [Frac Bool f/= .f/=] - [Frac Bool f/< .f/<] - [Frac Bool f/<= .f/<=] - [Frac Bool f/> .f/>] - [Frac Bool f/>= .f/>=] + [Frac Bit f/= .f/=] + [Frac Bit f/< .f/<] + [Frac Bit f/<= .f/<=] + [Frac Bit f/> .f/>] + [Frac Bit f/>= .f/>=] ) (def: #export if (All [__a __b] (=> {then (=> __a __b) else (=> __a __b)} - __a [Bool then else] __b)) + __a [Bit then else] __b)) (function (_ [[[stack test] then] else]) (.if test (then stack) @@ -269,7 +269,7 @@ (def: #export loop (All [___] - (=> {test (=> ___ ___ [Bool])} + (=> {test (=> ___ ___ [Bit])} ___ [test] ___)) (function (loop [stack pred]) (let [[stack' verdict] (pred stack)] @@ -293,7 +293,7 @@ (def: #export do (All [__a __b] - (=> {pred (=> __a __b [Bool]) + (=> {pred (=> __a __b [Bit]) body (=> __b __a)} __b [pred body] __a [pred body])) @@ -302,7 +302,7 @@ (def: #export while (All [__a __b] - (=> {pred (=> __a __b [Bool]) + (=> {pred (=> __a __b [Bit]) body (=> __b __a)} __a [pred body] __b)) @@ -330,11 +330,11 @@ (word: #export when (All [___] (=> {body (=> ___ ___)} - ___ [Bool body] + ___ [Bit body] ___)) swap [call] [drop] if) (word: #export ? (All [a] - (=> [Bool a a] [a])) + (=> [Bit a a] [a])) rotL [drop] [nip] if) diff --git a/stdlib/source/lux/control/contract.lux b/stdlib/source/lux/control/contract.lux index 1b4939cb6..9b7427190 100644 --- a/stdlib/source/lux/control/contract.lux +++ b/stdlib/source/lux/control/contract.lux @@ -8,7 +8,7 @@ ["s" syntax (#+ syntax:)]]]) (def: #export (assert! message test) - (-> Text Bool []) + (-> Text Bit []) (if test [] (error! message))) diff --git a/stdlib/source/lux/control/enum.lux b/stdlib/source/lux/control/enum.lux index b153beede..4dc825508 100644 --- a/stdlib/source/lux/control/enum.lux +++ b/stdlib/source/lux/control/enum.lux @@ -12,7 +12,7 @@ ## [Functions] (def: (range' <= succ from to) - (All [a] (-> (-> a a Bool) (-> a a) a a (List a))) + (All [a] (-> (-> a a Bit) (-> a a) a a (List a))) (if (<= to from) (#.Cons from (range' <= succ (succ from) to)) #.Nil)) diff --git a/stdlib/source/lux/control/equivalence.lux b/stdlib/source/lux/control/equivalence.lux index cddf72542..eb869a81c 100644 --- a/stdlib/source/lux/control/equivalence.lux +++ b/stdlib/source/lux/control/equivalence.lux @@ -2,7 +2,7 @@ (signature: #export (Equivalence a) {#.doc "Equivalence for a type's instances."} - (: (-> a a Bool) + (: (-> a a Bit) =)) (def: #export (product left right) diff --git a/stdlib/source/lux/control/exception.lux b/stdlib/source/lux/control/exception.lux index 41dd22b88..296513718 100644 --- a/stdlib/source/lux/control/exception.lux +++ b/stdlib/source/lux/control/exception.lux @@ -26,7 +26,7 @@ ## [Values] (def: #export (match? exception error) - (All [e] (-> (Exception e) Text Bool)) + (All [e] (-> (Exception e) Text Bit)) (text.starts-with? (get@ #label exception) error)) (def: #export (catch exception then try) @@ -76,7 +76,7 @@ (#/.Error (construct exception message))) (def: #export (assert exception message test) - (All [e] (-> (Exception e) e Bool (Error Any))) + (All [e] (-> (Exception e) e Bit (Error Any))) (if test (#/.Success []) (..throw exception message))) diff --git a/stdlib/source/lux/control/interval.lux b/stdlib/source/lux/control/interval.lux index ae8c6ce30..a1084290a 100644 --- a/stdlib/source/lux/control/interval.lux +++ b/stdlib/source/lux/control/interval.lux @@ -31,7 +31,7 @@ (do-template [<name> <comp>] [(def: #export (<name> interval) - (All [a] (-> (Interval a) Bool)) + (All [a] (-> (Interval a) Bit)) (let [(^open) interval] (<comp> bottom top)))] @@ -41,7 +41,7 @@ ) (def: #export (within? interval elem) - (All [a] (-> (Interval a) a Bool)) + (All [a] (-> (Interval a) a Bit)) (let [(^open) interval] (cond (inner? interval) (and (>= bottom elem) @@ -57,7 +57,7 @@ (do-template [<name> <limit>] [(def: #export (<name> elem interval) - (All [a] (-> a (Interval a) Bool)) + (All [a] (-> a (Interval a) Bit)) (let [(^open) interval] (= <limit> elem)))] @@ -66,7 +66,7 @@ ) (def: #export (borders? interval elem) - (All [a] (-> (Interval a) a Bool)) + (All [a] (-> (Interval a) a Bit)) (or (starts-with? elem interval) (ends-with? elem interval))) @@ -90,31 +90,31 @@ (def: top (pred bottom))))) (def: #export (precedes? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (let [(^open) reference limit (:: reference bottom)] (and (< limit (:: sample bottom)) (< limit (:: sample top))))) (def: #export (succeeds? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (precedes? sample reference)) (def: #export (meets? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (let [(^open) reference limit (:: reference bottom)] (and (<= limit (:: sample bottom)) (= limit (:: sample top))))) (def: #export (touches? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (or (meets? reference sample) (meets? sample reference))) (do-template [<name> <eq-side> <ineq> <ineq-side>] [(def: #export (<name> reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (let [(^open) reference] (and (= (:: reference <eq-side>) (:: sample <eq-side>)) (<ineq> (:: reference <ineq-side>) (:: sample <ineq-side>)))))] @@ -125,7 +125,7 @@ (do-template [<name> <comp>] [(def: #export (<name> reference sample) - (All [a] (-> a (Interval a) Bool)) + (All [a] (-> a (Interval a) Bit)) (let [(^open) sample] (and (<comp> reference bottom) (<comp> reference top))))] @@ -141,7 +141,7 @@ (= top (:: sample top)))))) (def: #export (nested? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (cond (or (singleton? sample) (and (inner? reference) (inner? sample)) (and (outer? reference) (outer? sample))) @@ -162,7 +162,7 @@ )) (def: #export (overlaps? reference sample) - (All [a] (-> (Interval a) (Interval a) Bool)) + (All [a] (-> (Interval a) (Interval a) Bit)) (let [(^open) reference] (and (not (:: Equivalence<Interval> = reference sample)) (cond (singleton? sample) diff --git a/stdlib/source/lux/control/order.lux b/stdlib/source/lux/control/order.lux index 6a801392d..7b07325a1 100644 --- a/stdlib/source/lux/control/order.lux +++ b/stdlib/source/lux/control/order.lux @@ -11,7 +11,7 @@ eq) (do-template [<name>] - [(: (-> a a Bool) <name>)] + [(: (-> a a Bit) <name>)] [<] [<=] [>] [>=] ) @@ -20,7 +20,7 @@ ## [Values] (def: #export (order eq <) (All [a] - (-> (Equivalence a) (-> a a Bool) (Order a))) + (-> (Equivalence a) (-> a a Bit) (Order a))) (let [> (flip <)] (structure (def: eq eq) (def: < <) diff --git a/stdlib/source/lux/control/parser.lux b/stdlib/source/lux/control/parser.lux index 4c5e827f9..7ad46dba8 100644 --- a/stdlib/source/lux/control/parser.lux +++ b/stdlib/source/lux/control/parser.lux @@ -61,7 +61,7 @@ ## [Parsers] (def: #export (assert message test) {#.doc "Fails with the given message if the test is false."} - (All [s] (-> Text Bool (Parser s Any))) + (All [s] (-> Text Bit (Parser s Any))) (function (_ input) (if test (#e.Success [input []]) @@ -254,7 +254,7 @@ (wrap output))) (def: #export (filter test parser) - (All [s a] (-> (-> a Bool) (Parser s a) (Parser s a))) + (All [s a] (-> (-> a Bit) (Parser s a) (Parser s a))) (do Monad<Parser> [output parser _ (assert "Constraint failed." (test output))] diff --git a/stdlib/source/lux/control/predicate.lux b/stdlib/source/lux/control/predicate.lux index 9af533a8f..383d1b907 100644 --- a/stdlib/source/lux/control/predicate.lux +++ b/stdlib/source/lux/control/predicate.lux @@ -5,7 +5,7 @@ [function]]) (type: #export (Predicate a) - (-> a Bool)) + (-> a Bit)) (do-template [<identity-name> <identity-value> <composition-name> <composition>] [(def: #export <identity-name> diff --git a/stdlib/source/lux/control/state.lux b/stdlib/source/lux/control/state.lux index 03965f498..94330ff96 100644 --- a/stdlib/source/lux/control/state.lux +++ b/stdlib/source/lux/control/state.lux @@ -135,7 +135,7 @@ (wrap [state a])))) (def: #export (while condition body) - (All [s] (-> (State s Bool) (State s Any) (State s Any))) + (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do Monad<State> [execute? condition] (if execute? @@ -145,7 +145,7 @@ (wrap [])))) (def: #export (do-while condition body) - (All [s] (-> (State s Bool) (State s Any) (State s Any))) + (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do Monad<State> [_ body] (while condition body))) diff --git a/stdlib/source/lux/data/bool.lux b/stdlib/source/lux/data/bit.lux index b75663ad5..60cef178b 100644 --- a/stdlib/source/lux/data/bool.lux +++ b/stdlib/source/lux/data/bit.lux @@ -8,30 +8,30 @@ function]) ## [Structures] -(structure: #export _ (Equivalence Bool) +(structure: #export _ (Equivalence Bit) (def: (= x y) (if x y (not y)))) -(structure: #export _ (Hash Bool) - (def: eq Equivalence<Bool>) +(structure: #export _ (Hash Bit) + (def: eq Equivalence<Bit>) (def: (hash value) (case value true +1 false +0))) (do-template [<name> <identity> <op>] - [(structure: #export <name> (Monoid Bool) + [(structure: #export <name> (Monoid Bit) (def: identity <identity>) (def: (compose x y) (<op> x y)))] - [ Or@Monoid<Bool> false or] - [And@Monoid<Bool> true and] + [ Or@Monoid<Bit> false or] + [And@Monoid<Bit> true and] ) -(structure: #export _ (Codec Text Bool) +(structure: #export _ (Codec Text Bit) (def: (encode x) (if x "true" @@ -41,11 +41,11 @@ (case input "true" (#.Right true) "false" (#.Right false) - _ (#.Left "Wrong syntax for Bool.")))) + _ (#.Left "Wrong syntax for Bit.")))) ## [Values] (def: #export complement {#.doc "Generates the complement of a predicate. That is a predicate that returns the oposite of the original predicate."} - (All [a] (-> (-> a Bool) (-> a Bool))) + (All [a] (-> (-> a Bit) (-> a Bit))) (compose not)) diff --git a/stdlib/source/lux/data/collection/array.lux b/stdlib/source/lux/data/collection/array.lux index 684988954..d8d4ce5fa 100644 --- a/stdlib/source/lux/data/collection/array.lux +++ b/stdlib/source/lux/data/collection/array.lux @@ -69,7 +69,7 @@ (def: #export (filter p xs) (All [a] - (-> (-> a Bool) (Array a) (Array a))) + (-> (-> a Bit) (Array a) (Array a))) (list/fold (function (_ idx xs') (case (read idx xs) #.None @@ -84,7 +84,7 @@ (def: #export (find p xs) (All [a] - (-> (-> a Bool) (Array a) (Maybe a))) + (-> (-> a Bit) (Array a) (Maybe a))) (let [arr-size (size xs)] (loop [idx +0] (if (n/< arr-size idx) @@ -101,7 +101,7 @@ (def: #export (find+ p xs) {#.doc "Just like 'find', but with access to the index of each value."} (All [a] - (-> (-> Nat a Bool) (Array a) (Maybe [Nat a]))) + (-> (-> Nat a Bit) (Array a) (Maybe [Nat a]))) (let [arr-size (size xs)] (loop [idx +0] (if (n/< arr-size idx) diff --git a/stdlib/source/lux/data/collection/bits.lux b/stdlib/source/lux/data/collection/bits.lux index b0e506cde..24eaa44a6 100644 --- a/stdlib/source/lux/data/collection/bits.lux +++ b/stdlib/source/lux/data/collection/bits.lux @@ -36,11 +36,11 @@ (|> bits array.size (n/* chunk-size))) (def: #export empty? - (-> Bits Bool) + (-> Bits Bit) (|>> size (n/= +0))) (def: #export (get index bits) - (-> Nat Bits Bool) + (-> Nat Bits Bit) (let [[chunk-index bit-index] (n//% chunk-size index)] (.and (n/< (array.size bits) chunk-index) (|> (array.read chunk-index bits) @@ -88,7 +88,7 @@ ) (def: #export (intersects? reference sample) - (-> Bits Bits Bool) + (-> Bits Bits Bit) (let [chunks (n/min (array.size reference) (array.size sample))] (loop [idx +0] diff --git a/stdlib/source/lux/data/collection/dictionary.lux b/stdlib/source/lux/data/collection/dictionary.lux index 8e967b768..5add5c74a 100644 --- a/stdlib/source/lux/data/collection/dictionary.lux +++ b/stdlib/source/lux/data/collection/dictionary.lux @@ -177,12 +177,12 @@ (->bit-position (level-index level hash))) (def: (bit-position-is-set? bit bitmap) - (-> BitPosition BitMap Bool) + (-> BitPosition BitMap Bit) (not (n/= clean-bitmap (i64.and bit bitmap)))) ## Figures out whether a bitmap only contains a single bit-position. (def: only-bit-position? - (-> BitPosition BitMap Bool) + (-> BitPosition BitMap Bit) n/=) (def: (set-bit-position bit bitmap) @@ -272,7 +272,7 @@ ## used). ## So, this test is introduced to detect them. (def: (empty?' node) - (All [k v] (-> (Node k v) Bool)) + (All [k v] (-> (Node k v) Bit)) (`` (case node (#Base (~~ (static ..clean-bitmap)) _) true @@ -569,7 +569,7 @@ (get' root-level (:: Hash<k> hash key) key Hash<k> node))) (def: #export (contains? key dict) - (All [k v] (-> k (Dictionary k v) Bool)) + (All [k v] (-> k (Dictionary k v) Bit)) (case (get key dict) #.None false (#.Some _) true)) @@ -604,7 +604,7 @@ (|>> product.right size')) (def: #export empty? - (All [k v] (-> (Dictionary k v) Bool)) + (All [k v] (-> (Dictionary k v) Bit)) (|>> size (n/= +0))) (def: #export (entries dict) diff --git a/stdlib/source/lux/data/collection/dictionary/ordered.lux b/stdlib/source/lux/data/collection/dictionary/ordered.lux index 963f178b3..153c17a69 100644 --- a/stdlib/source/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/lux/data/collection/dictionary/ordered.lux @@ -71,7 +71,7 @@ )))) (def: #export (contains? key dict) - (All [k v] (-> k (Dictionary k v) Bool)) + (All [k v] (-> k (Dictionary k v) Bit)) (let [## (^open "T/") (get@ #order dict) ] (loop [node (get@ #root dict)] diff --git a/stdlib/source/lux/data/collection/dictionary/plist.lux b/stdlib/source/lux/data/collection/dictionary/plist.lux index f1a6dff7e..050185307 100644 --- a/stdlib/source/lux/data/collection/dictionary/plist.lux +++ b/stdlib/source/lux/data/collection/dictionary/plist.lux @@ -18,7 +18,7 @@ (get key properties')))) (def: #export (contains? key properties) - (All [a] (-> Text (PList a) Bool)) + (All [a] (-> Text (PList a) Bit)) (case (get key properties) (#.Some _) true diff --git a/stdlib/source/lux/data/collection/list.lux b/stdlib/source/lux/data/collection/list.lux index b3089a01e..c734c140b 100644 --- a/stdlib/source/lux/data/collection/list.lux +++ b/stdlib/source/lux/data/collection/list.lux @@ -8,7 +8,7 @@ [equivalence (#+ Equivalence)] [fold]] [data - bool + bit [product]]]) ## [Types] @@ -37,7 +37,7 @@ (def: #export (filter p xs) (All [a] - (-> (-> a Bool) (List a) (List a))) + (-> (-> a Bit) (List a) (List a))) (case xs #.Nil #.Nil @@ -49,7 +49,7 @@ (def: #export (partition p xs) {#.doc "Divide the list into all elements that satisfy a predicate, and all elements that do not."} - (All [a] (-> (-> a Bool) (List a) [(List a) (List a)])) + (All [a] (-> (-> a Bit) (List a) [(List a) (List a)])) [(filter p xs) (filter (complement p) xs)]) (def: #export (as-pairs xs) @@ -84,7 +84,7 @@ (do-template [<name> <then> <else>] [(def: #export (<name> p xs) (All [a] - (-> (-> a Bool) (List a) (List a))) + (-> (-> a Bit) (List a) (List a))) (case xs #.Nil #.Nil @@ -113,7 +113,7 @@ (def: (split-with' p ys xs) (All [a] - (-> (-> a Bool) (List a) (List a) [(List a) (List a)])) + (-> (-> a Bit) (List a) (List a) [(List a) (List a)])) (case xs #.Nil [ys xs] @@ -126,7 +126,7 @@ (def: #export (split-with p xs) {#.doc "Segment the list by using a predicate to tell when to cut."} (All [a] - (-> (-> a Bool) (List a) [(List a) (List a)])) + (-> (-> a Bit) (List a) [(List a) (List a)])) (let [[ys' xs'] (split-with' p #.Nil xs)] [(reverse ys') xs'])) @@ -173,7 +173,7 @@ (def: #export (find p xs) {#.doc "Returns the first value in the list for which the predicate is true."} (All [a] - (-> (-> a Bool) (List a) (Maybe a))) + (-> (-> a Bit) (List a) (Maybe a))) (case xs #.Nil #.None @@ -234,7 +234,7 @@ (do-template [<name> <init> <op>] [(def: #export (<name> p xs) (All [a] - (-> (-> a Bool) (List a) Bool)) + (-> (-> a Bit) (List a) Bit)) (loop [xs xs] (case xs #.Nil @@ -320,7 +320,7 @@ ## [Functions] (def: #export (sort < xs) - (All [a] (-> (-> a a Bool) (List a) (List a))) + (All [a] (-> (-> a a Bit) (List a) (List a))) (case xs #.Nil (list) @@ -352,13 +352,13 @@ ) (def: #export (empty? xs) - (All [a] (-> (List a) Bool)) + (All [a] (-> (List a) Bit)) (case xs #.Nil true _ false)) (def: #export (member? eq xs x) - (All [a] (-> (Equivalence a) (List a) a Bool)) + (All [a] (-> (Equivalence a) (List a) a Bit)) (case xs #.Nil false (#.Cons x' xs') (or (:: eq = x x') diff --git a/stdlib/source/lux/data/collection/queue.lux b/stdlib/source/lux/data/collection/queue.lux index cf3587ece..864dfb67d 100644 --- a/stdlib/source/lux/data/collection/queue.lux +++ b/stdlib/source/lux/data/collection/queue.lux @@ -35,11 +35,11 @@ (list.size rear)))) (def: #export empty? - (All [a] (-> (Queue a) Bool)) + (All [a] (-> (Queue a) Bit)) (|>> (get@ #front) list.empty?)) (def: #export (member? Equivalence<a> queue member) - (All [a] (-> (Equivalence a) (Queue a) a Bool)) + (All [a] (-> (Equivalence a) (Queue a) a Bit)) (let [(^slots [#front #rear]) queue] (or (list.member? Equivalence<a> front member) (list.member? Equivalence<a> rear member)))) diff --git a/stdlib/source/lux/data/collection/queue/priority.lux b/stdlib/source/lux/data/collection/queue/priority.lux index 6765c6708..dbf6dec75 100644 --- a/stdlib/source/lux/data/collection/queue/priority.lux +++ b/stdlib/source/lux/data/collection/queue/priority.lux @@ -42,7 +42,7 @@ (n/+ (recur left) (recur right)))))) (def: #export (member? Equivalence<a> queue member) - (All [a] (-> (Equivalence a) (Queue a) a Bool)) + (All [a] (-> (Equivalence a) (Queue a) a Bit)) (case queue #.None false diff --git a/stdlib/source/lux/data/collection/row.lux b/stdlib/source/lux/data/collection/row.lux index 3b3b080eb..197e596e6 100644 --- a/stdlib/source/lux/data/collection/row.lux +++ b/stdlib/source/lux/data/collection/row.lux @@ -333,11 +333,11 @@ list)) (def: #export (member? a/Equivalence vec val) - (All [a] (-> (Equivalence a) (Row a) a Bool)) + (All [a] (-> (Equivalence a) (Row a) a Bit)) (list.member? a/Equivalence (to-list vec) val)) (def: #export empty? - (All [a] (-> (Row a) Bool)) + (All [a] (-> (Row a) Bit)) (|>> (get@ #size) (n/= +0))) ## [Syntax] diff --git a/stdlib/source/lux/data/collection/sequence.lux b/stdlib/source/lux/data/collection/sequence.lux index dc8f4a802..0a2350324 100644 --- a/stdlib/source/lux/data/collection/sequence.lux +++ b/stdlib/source/lux/data/collection/sequence.lux @@ -10,7 +10,7 @@ [code] ["s" syntax (#+ syntax: Syntax)]] [data - bool + bit [collection [list ("list/" Monad<List>)]]]]) ## [Types] @@ -91,8 +91,8 @@ [(#.Cons [x tail]) next]) [(list) xs])))] - [take-while drop-while split-while (-> a Bool) (pred x) pred] - [take drop split Nat (n/> +0 pred) (dec pred)] + [take-while drop-while split-while (-> a Bit) (pred x) pred] + [take drop split Nat (n/> +0 pred) (dec pred)] ) (def: #export (unfold step init) @@ -103,7 +103,7 @@ (pending [x (unfold step next)]))) (def: #export (filter p xs) - (All [a] (-> (-> a Bool) (Sequence a) (Sequence a))) + (All [a] (-> (-> a Bit) (Sequence a) (Sequence a))) (let [[x xs'] (continuation.run xs)] (if (p x) (pending [x (filter p xs')]) @@ -115,7 +115,7 @@ The left side contains all entries for which the predicate is true. The right side contains all entries for which the predicate is false."} - (All [a] (-> (-> a Bool) (Sequence a) [(Sequence a) (Sequence a)])) + (All [a] (-> (-> a Bit) (Sequence a) [(Sequence a) (Sequence a)])) [(filter p xs) (filter (complement p) xs)]) ## [Structures] diff --git a/stdlib/source/lux/data/collection/set.lux b/stdlib/source/lux/data/collection/set.lux index 5fa774e9e..11381c683 100644 --- a/stdlib/source/lux/data/collection/set.lux +++ b/stdlib/source/lux/data/collection/set.lux @@ -31,7 +31,7 @@ (|> set :representation (dict.remove elem) :abstraction)) (def: #export (member? set elem) - (All [a] (-> (Set a) a Bool)) + (All [a] (-> (Set a) a Bit)) (|> set :representation (dict.contains? elem))) (def: #export to-list @@ -68,7 +68,7 @@ ) (def: #export empty? - (All [a] (-> (Set a) Bool)) + (All [a] (-> (Set a) Bit)) (|>> ..size (n/= +0))) (def: #export (from-list Hash<a> xs) @@ -76,9 +76,9 @@ (list/fold ..add (..new Hash<a>) xs)) (def: #export (sub? super sub) - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (list.every? (..member? super) (..to-list sub))) (def: #export (super? sub super) - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (sub? super sub)) diff --git a/stdlib/source/lux/data/collection/set/multi.lux b/stdlib/source/lux/data/collection/set/multi.lux index 5aff87021..314c0423c 100644 --- a/stdlib/source/lux/data/collection/set/multi.lux +++ b/stdlib/source/lux/data/collection/set/multi.lux @@ -96,7 +96,7 @@ subject))) (def: #export (sub? reference subject) - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (|> subject :representation dictionary.entries @@ -138,11 +138,11 @@ ) (def: #export (member? set elem) - (All [a] (-> (Set a) a Bool)) + (All [a] (-> (Set a) a Bit)) (|> set (..multiplicity elem) (n/> +0))) (def: #export empty? - (All [a] (-> (Set a) Bool)) + (All [a] (-> (Set a) Bit)) (|>> ..size (n/= +0))) (def: #export (from-list Hash<a> subject) @@ -150,5 +150,5 @@ (list/fold ..add/1 (..new Hash<a>) subject)) (def: #export super? - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (function.flip sub?)) diff --git a/stdlib/source/lux/data/collection/set/ordered.lux b/stdlib/source/lux/data/collection/set/ordered.lux index 7e43d2a4e..b9fff0680 100644 --- a/stdlib/source/lux/data/collection/set/ordered.lux +++ b/stdlib/source/lux/data/collection/set/ordered.lux @@ -19,7 +19,7 @@ (|>> //.new :abstraction)) (def: #export (member? set elem) - (All [a] (-> (Set a) a Bool)) + (All [a] (-> (Set a) a Bit)) (|> set :representation (//.contains? elem))) (do-template [<name> <alias>] @@ -79,11 +79,11 @@ ) (def: #export (sub? super sub) - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (|> sub ..to-list (list.every? (..member? super)))) (def: #export (super? sub super) - (All [a] (-> (Set a) (Set a) Bool)) + (All [a] (-> (Set a) (Set a) Bit)) (sub? super sub)) diff --git a/stdlib/source/lux/data/collection/stack.lux b/stdlib/source/lux/data/collection/stack.lux index 409993ef1..8a24010e7 100644 --- a/stdlib/source/lux/data/collection/stack.lux +++ b/stdlib/source/lux/data/collection/stack.lux @@ -18,7 +18,7 @@ (list.size stack)) (def: #export (empty? stack) - (All [a] (-> (Stack a) Bool)) + (All [a] (-> (Stack a) Bit)) (list.empty? stack)) (def: #export (peek stack) diff --git a/stdlib/source/lux/data/collection/tree/finger.lux b/stdlib/source/lux/data/collection/tree/finger.lux index 1ce6d63fc..b77fca2ec 100644 --- a/stdlib/source/lux/data/collection/tree/finger.lux +++ b/stdlib/source/lux/data/collection/tree/finger.lux @@ -35,7 +35,7 @@ (get@ #node right))})) (def: #export (search pred tree) - (All [m a] (-> (-> m Bool) (Tree m a) (Maybe a))) + (All [m a] (-> (-> m Bit) (Tree m a) (Maybe a))) (let [tag/compose (get@ [#monoid #m.compose] tree)] (if (pred (tag tree)) (loop [_tag (get@ [#monoid #m.identity] tree) @@ -52,7 +52,7 @@ #.None))) (def: #export (found? pred tree) - (All [m a] (-> (-> m Bool) (Tree m a) Bool)) + (All [m a] (-> (-> m Bit) (Tree m a) Bit)) (case (search pred tree) (#.Some _) true diff --git a/stdlib/source/lux/data/collection/tree/rose/zipper.lux b/stdlib/source/lux/data/collection/tree/rose/zipper.lux index f9a33ce0e..cdaba29fc 100644 --- a/stdlib/source/lux/data/collection/tree/rose/zipper.lux +++ b/stdlib/source/lux/data/collection/tree/rose/zipper.lux @@ -44,20 +44,20 @@ (|> zipper (get@ [#node #rose.children]))) (def: #export (branch? zipper) - (All [a] (-> (Zipper a) Bool)) + (All [a] (-> (Zipper a) Bit)) (|> zipper children list.empty? not)) (def: #export (leaf? zipper) - (All [a] (-> (Zipper a) Bool)) + (All [a] (-> (Zipper a) Bit)) (|> zipper branch? not)) (def: #export (end? zipper) - (All [a] (-> (Zipper a) Bool)) + (All [a] (-> (Zipper a) Bit)) (and (list.empty? (get@ #rights zipper)) (list.empty? (children zipper)))) (def: #export (root? zipper) - (All [a] (-> (Zipper a) Bool)) + (All [a] (-> (Zipper a) Bit)) (case (get@ #parent zipper) #.None true diff --git a/stdlib/source/lux/data/format/binary.lux b/stdlib/source/lux/data/format/binary.lux index 4503f21dd..a5dcde900 100644 --- a/stdlib/source/lux/data/format/binary.lux +++ b/stdlib/source/lux/data/format/binary.lux @@ -148,14 +148,14 @@ (Binary Any) (ignore [])) -(def: #export bool - (Binary Bool) +(def: #export bit + (Binary Bit) {#read (function (_ [offset blob]) (case (blob.read/8 offset blob) (#error.Success data) (case (: Nat data) - (^template [<nat> <bool>] - <nat> (#error.Success [(inc offset) blob] <bool>)) + (^template [<nat> <bit>] + <nat> (#error.Success [(inc offset) blob] <bit>)) ([+0 false] [+1 true]) @@ -264,8 +264,8 @@ (function (_ code) (let [sequence (..list code) code' ($_ ..alt - ## #Bool - ..bool + ## #Bit + ..bit ## #Nat ..nat ## #Int diff --git a/stdlib/source/lux/data/format/json.lux b/stdlib/source/lux/data/format/json.lux index 0316b5a9b..4dfa6cb7d 100644 --- a/stdlib/source/lux/data/format/json.lux +++ b/stdlib/source/lux/data/format/json.lux @@ -8,7 +8,7 @@ codec ["p" parser ("parser/" Monad<Parser>)]] [data - [bool] + [bit] [text ("text/" Equivalence<Text> Monoid<Text>) ["l" lexer]] [number ("frac/" Codec<Text,Frac>) ("nat/" Codec<Text,Nat>)] @@ -28,7 +28,7 @@ [(type: #export <name> <type>)] [Null Any] - [Boolean Bool] + [Boolean Bit] [Number Frac] [String Text] ) @@ -67,9 +67,9 @@ (^template [<ast-tag> <ctor> <json-tag>] [_ (<ast-tag> value)] (wrap (list (` (: JSON (<json-tag> (~ (<ctor> value)))))))) - ([#.Bool code.bool #Boolean] - [#.Frac code.frac #Number] - [#.Text code.text #String]) + ([#.Bit code.bit #Boolean] + [#.Frac code.frac #Number] + [#.Text code.text #String]) [_ (#.Tag ["" "null"])] (wrap (list (` (: JSON #Null)))) @@ -159,7 +159,7 @@ (^template [<tag> <struct>] [(<tag> x') (<tag> y')] (:: <struct> = x' y')) - ([#Boolean bool.Equivalence<Bool>] + ([#Boolean bit.Equivalence<Bit>] [#Number number.Equivalence<Frac>] [#String text.Equivalence<Text>]) @@ -237,16 +237,22 @@ _ (fail ($_ text/compose "JSON value is not " <desc> ".")))))] - [null Any #Null "null"] - [boolean Bool #Boolean "boolean"] + [null Any #Null "null"] + [boolean Bit #Boolean "boolean"] [number Frac #Number "number"] [string Text #String "string"] ) +(def: (encode-boolean value) + (-> Bit Text) + (if value + "true" + "false")) + (do-template [<test> <check> <type> <eq> <encoder> <tag> <desc> <pre>] [(def: #export (<test> test) {#.doc (code.text ($_ text/compose "Asks whether a JSON value is a " <desc> "."))} - (-> <type> (Reader Bool)) + (-> <type> (Reader Bit)) (do p.Monad<Parser> [head any] (case head @@ -271,7 +277,7 @@ _ (fail ($_ text/compose "JSON value is not a " <desc> ".")))))] - [boolean? boolean! Bool bool.Equivalence<Bool> (:: bool.Codec<Text,Bool> encode) #Boolean "boolean" id] + [boolean? boolean! Bit bit.Equivalence<Bit> encode-boolean #Boolean "boolean" id] [number? number! Frac number.Equivalence<Frac> (:: number.Codec<Text,Frac> encode) #Number "number" id] [string? string! Text text.Equivalence<Text> text.encode #String "string" id] ) @@ -360,7 +366,7 @@ (do-template [<name> <type> <codec>] [(def: <name> (-> <type> Text) <codec>)] - [show-boolean Boolean (:: bool.Codec<Text,Bool> encode)] + [show-boolean Boolean encode-boolean] [show-number Number (:: number.Codec<Text,Frac> encode)] [show-string String text.encode]) diff --git a/stdlib/source/lux/data/number.lux b/stdlib/source/lux/data/number.lux index 773300f31..cb322299c 100644 --- a/stdlib/source/lux/data/number.lux +++ b/stdlib/source/lux/data/number.lux @@ -149,11 +149,11 @@ (def: #export (not-a-number? number) {#.doc "Tests whether a frac is actually not-a-number."} - (-> Frac Bool) + (-> Frac Bit) (not (f/= number number))) (def: #export (frac? value) - (-> Frac Bool) + (-> Frac Bit) (not (or (not-a-number? value) (f/= positive-infinity value) (f/= negative-infinity value)))) @@ -574,7 +574,7 @@ (do-template [<from> <from-translator> <to> <to-translator> <base-bits>] [(def: (<from> on-left? input) - (-> Bool Text Text) + (-> Bit Text Text) (let [max-num-chars (n// <base-bits> +64) input-size ("lux text size" input) zero-padding (let [num-digits-that-need-padding (n/% <base-bits> input-size)] @@ -669,7 +669,7 @@ (#e.Error "Wrong syntax for \"encoding-doc\"."))) (def: (underscore-prefixed? number) - (-> Text Bool) + (-> Text Bit) (case ("lux text index" number "_" +0) (#.Some +0) true @@ -827,7 +827,7 @@ #.None))) (def: (digits-lt param subject) - (-> Digits Digits Bool) + (-> Digits Digits Bit) (loop [idx +0] (and (n/< i64.width idx) (let [pd (digits-get idx param) diff --git a/stdlib/source/lux/data/number/complex.lux b/stdlib/source/lux/data/number/complex.lux index 134801015..5c9c97d46 100644 --- a/stdlib/source/lux/data/number/complex.lux +++ b/stdlib/source/lux/data/number/complex.lux @@ -40,7 +40,7 @@ (number.not-a-number? (get@ #imaginary complex)))) (def: #export (= param input) - (-> Complex Complex Bool) + (-> Complex Complex Bit) (and (f/= (get@ #real param) (get@ #real input)) (f/= (get@ #imaginary param) diff --git a/stdlib/source/lux/data/number/i64.lux b/stdlib/source/lux/data/number/i64.lux index 353a1237a..32b9df2e3 100644 --- a/stdlib/source/lux/data/number/i64.lux +++ b/stdlib/source/lux/data/number/i64.lux @@ -67,7 +67,7 @@ ) (def: #export (set? idx input) - (-> Nat (I64 Any) Bool) + (-> Nat (I64 Any) Bit) (|> input (:coerce I64) (..and (flag idx)) (n/= +0) .not)) (do-template [<name> <main> <comp>] diff --git a/stdlib/source/lux/data/number/ratio.lux b/stdlib/source/lux/data/number/ratio.lux index b1aed0cba..2aa332dc6 100644 --- a/stdlib/source/lux/data/number/ratio.lux +++ b/stdlib/source/lux/data/number/ratio.lux @@ -71,7 +71,7 @@ input))) (def: #export (= param input) - (-> Ratio Ratio Bool) + (-> Ratio Ratio Bit) (and (n/= (get@ #numerator param) (get@ #numerator input)) (n/= (get@ #denominator param) @@ -79,7 +79,7 @@ (do-template [<name> <op>] [(def: #export (<name> param input) - (-> Ratio Ratio Bool) + (-> Ratio Ratio Bit) (and (<op> (n/* (get@ #denominator input) (get@ #numerator param)) (n/* (get@ #denominator param) diff --git a/stdlib/source/lux/data/tainted.lux b/stdlib/source/lux/data/tainted.lux index 903b777d6..7ff754081 100644 --- a/stdlib/source/lux/data/tainted.lux +++ b/stdlib/source/lux/data/tainted.lux @@ -17,7 +17,7 @@ (|>> :representation))) (def: #export (validate pred tainted) - (All [a] (-> (-> a Bool) (Tainted a) (Maybe a))) + (All [a] (-> (-> a Bit) (Tainted a) (Maybe a))) (let [value (trust tainted)] (if (pred value) (#.Some value) diff --git a/stdlib/source/lux/data/text.lux b/stdlib/source/lux/data/text.lux index 3a9e6ab3b..8120f19d5 100644 --- a/stdlib/source/lux/data/text.lux +++ b/stdlib/source/lux/data/text.lux @@ -60,7 +60,7 @@ #.None)) (def: #export (starts-with? prefix x) - (-> Text Text Bool) + (-> Text Text Bit) (case (index-of prefix x) (#.Some +0) true @@ -69,7 +69,7 @@ false)) (def: #export (ends-with? postfix x) - (-> Text Text Bool) + (-> Text Text Bit) (case (last-index-of postfix x) (#.Some n) (n/= (size x) @@ -79,7 +79,7 @@ false)) (def: #export (contains? sub text) - (-> Text Text Bool) + (-> Text Text Bit) (case ("lux text index" text sub +0) (#.Some _) true @@ -200,7 +200,7 @@ (|> texts (list.interpose sep) concat)) (def: #export (empty? text) - (-> Text Bool) + (-> Text Bit) (case text "" true _ false)) @@ -234,7 +234,7 @@ (def: #export (space? char) {#.doc "Checks whether the character is white-space."} - (-> Nat Bool) + (-> Nat Bit) (case char (^or (^ (char "\t")) (^ (char "\v")) (^ (char " ")) (^ (char "\n")) diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux index d32862024..4b9717fab 100644 --- a/stdlib/source/lux/data/text/format.lux +++ b/stdlib/source/lux/data/text/format.lux @@ -4,7 +4,7 @@ [monad (#+ do Monad)] ["p" parser]] [data - [bool] + [bit] [number] [text] [ident] @@ -39,7 +39,7 @@ (Format <type>) <formatter>)] - [%b Bool (:: bool.Codec<Text,Bool> encode)] + [%b Bit (:: bit.Codec<Text,Bit> encode)] [%n Nat (:: number.Codec<Text,Nat> encode)] [%i Int (:: number.Codec<Text,Int> encode)] [%r Rev (:: number.Codec<Text,Rev> encode)] diff --git a/stdlib/source/lux/data/text/lexer.lux b/stdlib/source/lux/data/text/lexer.lux index 13c49ef8f..d9b07db1e 100644 --- a/stdlib/source/lux/data/text/lexer.lux +++ b/stdlib/source/lux/data/text/lexer.lux @@ -78,7 +78,7 @@ (def: #export (this? reference) {#.doc "Lex a text if it matches the given sample."} - (-> Text (Lexer Bool)) + (-> Text (Lexer Bit)) (function (_ (^@ input [offset tape])) (case (text.index-of' reference offset tape) (^multi (#.Some where) (n/= offset where)) @@ -97,7 +97,7 @@ (def: #export end? {#.doc "Ask if the lexer's input is empty."} - (Lexer Bool) + (Lexer Bit) (function (_ (^@ input [offset tape])) (#e.Success [input (n/= offset (text.size tape))]))) @@ -190,7 +190,7 @@ (def: #export (satisfies p) {#.doc "Only lex characters that satisfy a predicate."} - (-> (-> Nat Bool) (Lexer Text)) + (-> (-> Nat Bit) (Lexer Text)) (function (_ [offset tape]) (case (text.nth offset tape) (#.Some output) diff --git a/stdlib/source/lux/data/text/regex.lux b/stdlib/source/lux/data/text/regex.lux index 8b35b770c..107270225 100644 --- a/stdlib/source/lux/data/text/regex.lux +++ b/stdlib/source/lux/data/text/regex.lux @@ -260,7 +260,7 @@ (#Capturing [(Maybe Text) Nat])) (def: (re-sequential^ capturing? re-scoped^ current-module) - (-> Bool + (-> Bit (-> Text (l.Lexer [Re-Group Code])) Text (l.Lexer [Nat Code])) @@ -351,7 +351,7 @@ (` ((~! unflatten^) (~ alt))))) (def: (re-alternative^ capturing? re-scoped^ current-module) - (-> Bool + (-> Bit (-> Text (l.Lexer [Re-Group Code])) Text (l.Lexer [Nat Code])) diff --git a/stdlib/source/lux/data/text/unicode.lux b/stdlib/source/lux/data/text/unicode.lux index 10b9692ee..11c69be84 100644 --- a/stdlib/source/lux/data/text/unicode.lux +++ b/stdlib/source/lux/data/text/unicode.lux @@ -50,7 +50,7 @@ (|> end (n/- start) inc))) (def: #export (within? segment char) - (All [a] (-> Segment Char Bool)) + (All [a] (-> Segment Char Bit)) (interval.within? (:representation segment) char)) ) diff --git a/stdlib/source/lux/host.js.lux b/stdlib/source/lux/host.js.lux index b3758e3b5..022394f21 100644 --- a/stdlib/source/lux/host.js.lux +++ b/stdlib/source/lux/host.js.lux @@ -23,7 +23,7 @@ [String Text] [Number Frac] - [Boolean Bool] + [Boolean Bit] ) ## [Syntax] diff --git a/stdlib/source/lux/host.jvm.lux b/stdlib/source/lux/host.jvm.lux index 8639ea2c5..927f16c7d 100644 --- a/stdlib/source/lux/host.jvm.lux +++ b/stdlib/source/lux/host.jvm.lux @@ -13,7 +13,7 @@ [product] [text ("text/" Equivalence<Text> Monoid<Text>) format] - [bool ("bool/" Codec<Text,Bool>)]] + [bit ("bit/" Codec<Text,Bit>)]] [macro (#+ with-gensyms Functor<Meta> Monad<Meta>) [code] ["s" syntax (#+ syntax: Syntax)]] @@ -147,27 +147,27 @@ [GenericType Code]) (type: Method-Definition - (#ConstructorMethod [Bool + (#ConstructorMethod [Bit (List Type-Paramameter) (List ArgDecl) (List ConstructorArg) Code (List GenericType)]) - (#VirtualMethod [Bool - Bool + (#VirtualMethod [Bit + Bit (List Type-Paramameter) (List ArgDecl) GenericType Code (List GenericType)]) - (#OverridenMethod [Bool + (#OverridenMethod [Bit Class-Declaration (List Type-Paramameter) (List ArgDecl) GenericType Code (List GenericType)]) - (#StaticMethod [Bool + (#StaticMethod [Bit (List Type-Paramameter) (List ArgDecl) GenericType @@ -195,10 +195,10 @@ #import-member-alias Text #import-member-kind ImportMethodKind #import-member-tvars (List Type-Paramameter) - #import-member-args (List [Bool GenericType]) - #import-member-maybe? Bool - #import-member-try? Bool - #import-member-io? Bool}) + #import-member-args (List [Bit GenericType]) + #import-member-maybe? Bit + #import-member-try? Bit + #import-member-io? Bit}) (type: ImportConstructorDecl {}) @@ -210,9 +210,9 @@ (type: ImportFieldDecl {#import-field-mode Primitive-Mode #import-field-name Text - #import-field-static? Bool - #import-field-maybe? Bool - #import-field-setter? Bool + #import-field-static? Bit + #import-field-maybe? Bit + #import-field-setter? Bit #import-field-type GenericType}) (type: Import-Member-Declaration @@ -259,7 +259,7 @@ (^template [<prim> <type>] <prim> (#.Some (' <type>))) - (["boolean" .Bool] + (["boolean" .Bit] ["byte" .Int] ["short" .Int] ["int" .Int] @@ -277,8 +277,8 @@ (def: (generic-class->type' mode type-params in-array? name+params class->type') - (-> Primitive-Mode (List Type-Paramameter) Bool [Text (List GenericType)] - (-> Primitive-Mode (List Type-Paramameter) Bool GenericType Code) + (-> Primitive-Mode (List Type-Paramameter) Bit [Text (List GenericType)] + (-> Primitive-Mode (List Type-Paramameter) Bit GenericType Code) Code) (case [name+params mode in-array?] (^multi [[prim #.Nil] #ManualPrM false] @@ -295,7 +295,7 @@ (` (primitive (~ (code.text name)) [(~+ =params)]))))) (def: (class->type' mode type-params in-array? class) - (-> Primitive-Mode (List Type-Paramameter) Bool GenericType Code) + (-> Primitive-Mode (List Type-Paramameter) Bit GenericType Code) (case class (#GenericTypeVar name) (case (list.find (function (_ [pname pbounds]) @@ -977,11 +977,11 @@ s.local-symbol))) (def: (import-member-args^ imports type-vars) - (-> Class-Imports (List Type-Paramameter) (Syntax (List [Bool GenericType]))) + (-> Class-Imports (List Type-Paramameter) (Syntax (List [Bit GenericType]))) (s.tuple (p.some (p.seq (s.this? (' #?)) (generic-type^ imports type-vars))))) (def: import-member-return-flags^ - (Syntax [Bool Bool Bool]) + (Syntax [Bit Bit Bit]) ($_ p.seq (s.this? (' #io)) (s.this? (' #try)) (s.this? (' #?)))) (def: primitive-mode^ @@ -1181,7 +1181,7 @@ (with-parens (spaced (list "init" (privacy-modifier$ pm) - (bool/encode strict-fp?) + (bit/encode strict-fp?) (with-brackets (spaced (list/map annotation$ anns))) (with-brackets (spaced (list/map type-param$ type-vars))) (with-brackets (spaced (list/map generic-type$ exs))) @@ -1195,8 +1195,8 @@ (spaced (list "virtual" name (privacy-modifier$ pm) - (bool/encode final?) - (bool/encode strict-fp?) + (bit/encode final?) + (bit/encode strict-fp?) (with-brackets (spaced (list/map annotation$ anns))) (with-brackets (spaced (list/map type-param$ type-vars))) (with-brackets (spaced (list/map generic-type$ exs))) @@ -1216,7 +1216,7 @@ (spaced (list "override" (class-decl$ class-decl) name - (bool/encode strict-fp?) + (bit/encode strict-fp?) (with-brackets (spaced (list/map annotation$ anns))) (with-brackets (spaced (list/map type-param$ type-vars))) (with-brackets (spaced (list/map generic-type$ exs))) @@ -1233,7 +1233,7 @@ (spaced (list "static" name (privacy-modifier$ pm) - (bool/encode strict-fp?) + (bit/encode strict-fp?) (with-brackets (spaced (list/map annotation$ anns))) (with-brackets (spaced (list/map type-param$ type-vars))) (with-brackets (spaced (list/map generic-type$ exs))) @@ -1398,7 +1398,7 @@ (null? "YOLO") "=>" false)} - (-> (primitive "java.lang.Object") Bool) + (-> (primitive "java.lang.Object") Bit) ("jvm object null?" obj)) (syntax: #export (??? expr) @@ -1454,7 +1454,7 @@ (do @ [g!_ (macro.gensym "_") g!obj (macro.gensym "obj")] - (wrap (list (` (: (-> (primitive "java.lang.Object") Bool) + (wrap (list (` (: (-> (primitive "java.lang.Object") Bit) (function ((~ g!_) (~ g!obj)) ((~ (code.text (format "jvm instanceof" ":" (simple-class$ (list) class)))) (~ g!obj)))))))) )) @@ -1480,7 +1480,7 @@ (~ g!obj)))))))) (def: (class-import$ long-name? [full-name params]) - (-> Bool Class-Declaration Code) + (-> Bit Class-Declaration Code) (let [def-name (if long-name? full-name (short-class-name full-name)) @@ -1517,7 +1517,7 @@ (let [(^slots [#import-member-tvars #import-member-args]) commons] (do Monad<Meta> [arg-inputs (monad.map @ - (: (-> [Bool GenericType] (Meta [Code Code])) + (: (-> [Bit GenericType] (Meta [Code Code])) (function (_ [maybe? _]) (with-gensyms [arg-name] (wrap [arg-name (if maybe? @@ -1527,7 +1527,7 @@ #let [arg-classes (: (List Text) (list/map (|>> product.right (simple-class$ (list/compose type-params import-member-tvars))) import-member-args)) - arg-types (list/map (: (-> [Bool GenericType] Code) + arg-types (list/map (: (-> [Bit GenericType] Code) (function (_ [maybe? arg]) (let [arg-type (class->type (get@ #import-member-mode commons) type-params arg)] (if maybe? @@ -1588,7 +1588,7 @@ ) (def: (free-type-param? [name bounds]) - (-> Type-Paramameter Bool) + (-> Type-Paramameter Bit) (case bounds #.Nil true _ false)) @@ -1621,7 +1621,7 @@ body))) (def: (auto-conv-class? class) - (-> Text Bool) + (-> Text Bit) (case class (^or "byte" "short" "int" "float") true @@ -1828,7 +1828,7 @@ ))) (def: (member-import$ type-params long-name? kind class member) - (-> (List Type-Paramameter) Bool Class-Kind Class-Declaration Import-Member-Declaration (Meta (List Code))) + (-> (List Type-Paramameter) Bit Class-Kind Class-Declaration Import-Member-Declaration (Meta (List Code))) (let [[full-name _] class method-prefix (if long-name? full-name @@ -1838,7 +1838,7 @@ (member-def-interop type-params kind class =args member method-prefix)))) (def: (interface? class) - (All [a] (-> (primitive "java.lang.Class" [a]) Bool)) + (All [a] (-> (primitive "java.lang.Class" [a]) Bit)) ("jvm invokevirtual:java.lang.Class:isInterface:" class)) (def: (load-class class-name) diff --git a/stdlib/source/lux/language/compiler/analysis.lux b/stdlib/source/lux/language/compiler/analysis.lux index 0ca620e42..e9eb3b921 100644 --- a/stdlib/source/lux/language/compiler/analysis.lux +++ b/stdlib/source/lux/language/compiler/analysis.lux @@ -13,7 +13,7 @@ (type: #export #rec Primitive #Unit - (#Bool Bool) + (#Bit Bit) (#Nat Nat) (#Int Int) (#Rev Rev) @@ -80,7 +80,7 @@ (-> <type> Analysis) (|>> <tag> #Primitive))] - [bool Bool #Bool] + [bit Bit #Bit] [nat Nat #Nat] [int Int #Int] [rev Rev #Rev] @@ -90,7 +90,7 @@ (type: #export (Variant a) {#lefts Nat - #right? Bool + #right? Bit #value a}) (type: #export (Tuple a) (List a)) @@ -102,7 +102,7 @@ (type: #export (Application c) [c (List c)]) (def: (last? size tag) - (-> Nat Tag Bool) + (-> Nat Tag Bit) (n/= (dec size) tag)) (template: #export (no-op value) @@ -215,7 +215,7 @@ [(template: #export (<name> content) (#..Simple (<tag> content)))] - [pattern/bool #..Bool] + [pattern/bit #..Bit] [pattern/nat #..Nat] [pattern/int #..Int] [pattern/rev #..Rev] diff --git a/stdlib/source/lux/language/compiler/analysis/case.lux b/stdlib/source/lux/language/compiler/analysis/case.lux index 760ea3b03..2f5162fbd 100644 --- a/stdlib/source/lux/language/compiler/analysis/case.lux +++ b/stdlib/source/lux/language/compiler/analysis/case.lux @@ -163,7 +163,7 @@ (^template [<type> <input> <output>] [cursor <input>] (analyse-primitive <type> inputT cursor (#//.Simple <output>) next)) - ([Bool (#.Bool pattern-value) (#//.Bool pattern-value)] + ([Bit (#.Bit pattern-value) (#//.Bit pattern-value)] [Nat (#.Nat pattern-value) (#//.Nat pattern-value)] [Int (#.Int pattern-value) (#//.Int pattern-value)] [Rev (#.Rev pattern-value) (#//.Rev pattern-value)] diff --git a/stdlib/source/lux/language/compiler/analysis/case/coverage.lux b/stdlib/source/lux/language/compiler/analysis/case/coverage.lux index bce8512e5..b718c382d 100644 --- a/stdlib/source/lux/language/compiler/analysis/case/coverage.lux +++ b/stdlib/source/lux/language/compiler/analysis/case/coverage.lux @@ -5,7 +5,7 @@ ["ex" exception (#+ exception:)] equivalence] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [number] ["e" error ("error/" Monad<Error>)] [maybe] @@ -50,18 +50,18 @@ ## as insuficient (since it could lead to runtime errors due to values ## not being handled by any pattern). ## The #Partial tag covers arbitrary partial coverages in a general -## way, while the other tags cover more specific cases for booleans +## way, while the other tags cover more specific cases for bits ## and variants. (type: #export #rec Coverage #Partial - (#Bool Bool) + (#Bit Bit) (#Variant (Maybe Nat) (Dictionary Nat Coverage)) (#Seq Coverage Coverage) (#Alt Coverage Coverage) #Exhaustive) (def: #export (exhaustive? coverage) - (-> Coverage Bool) + (-> Coverage Bit) (case coverage (#Exhaustive _) true @@ -87,11 +87,11 @@ [#///.Frac] [#///.Text]) - ## Bools are the exception, since there is only "true" and - ## "false", which means it is possible for boolean + ## Bits are the exception, since there is only "true" and + ## "false", which means it is possible for bit ## pattern-matching to become exhaustive if complementary parts meet. - (#///.Simple (#///.Bool value)) - (operation/wrap (#Bool value)) + (#///.Simple (#///.Bit value)) + (operation/wrap (#Bit value)) ## Tuple patterns can be exhaustive if there is exhaustiveness for all of ## their sub-patterns. @@ -122,7 +122,7 @@ (dict.put variant-idx value-coverage)))))))) (def: (xor left right) - (-> Bool Bool Bool) + (-> Bit Bit Bit) (or (and left (not right)) (and (not left) right))) @@ -151,8 +151,8 @@ [#Exhaustive #Exhaustive] true - [(#Bool sideR) (#Bool sideS)] - (bool/= sideR sideS) + [(#Bit sideR) (#Bit sideS)] + (bit/= sideR sideS) [(#Variant allR casesR) (#Variant allS casesS)] (and (n/= (cases allR) @@ -194,8 +194,8 @@ [#Partial #Partial] (error/wrap #Partial) - ## 2 boolean coverages are exhaustive if they compliment one another. - (^multi [(#Bool sideA) (#Bool sideSF)] + ## 2 bit coverages are exhaustive if they complement one another. + (^multi [(#Bit sideA) (#Bit sideSF)] (xor sideA sideSF)) (error/wrap #Exhaustive) diff --git a/stdlib/source/lux/language/compiler/analysis/expression.lux b/stdlib/source/lux/language/compiler/analysis/expression.lux index 1c5c8794c..f413b8077 100644 --- a/stdlib/source/lux/language/compiler/analysis/expression.lux +++ b/stdlib/source/lux/language/compiler/analysis/expression.lux @@ -44,7 +44,7 @@ (^template [<tag> <analyser>] (<tag> value) (<analyser> value)) - ([#.Bool primitive.bool] + ([#.Bit primitive.bit] [#.Nat primitive.nat] [#.Int primitive.int] [#.Rev primitive.rev] diff --git a/stdlib/source/lux/language/compiler/analysis/module.lux b/stdlib/source/lux/language/compiler/analysis/module.lux index 2a2aef5c3..bdc4abf05 100644 --- a/stdlib/source/lux/language/compiler/analysis/module.lux +++ b/stdlib/source/lux/language/compiler/analysis/module.lux @@ -102,7 +102,7 @@ []]))))) (def: #export (exists? module) - (-> Text (Operation Bool)) + (-> Text (Operation Bit)) (extension.lift (function (_ state) (|> state @@ -173,7 +173,7 @@ ((///.throw unknown-module module-name) state))))) (def: #export (<asker> module-name) - (-> Text (Operation Bool)) + (-> Text (Operation Bit)) (extension.lift (function (_ state) (case (|> state (get@ #.modules) (plist.get module-name)) @@ -203,8 +203,8 @@ #.None ((///.throw unknown-module module-name) state)))))] - [tags #.tags (List [Text [Nat (List Ident) Bool Type]])] - [types #.types (List [Text [(List Ident) Bool Type]])] + [tags #.tags (List [Text [Nat (List Ident) Bit Type]])] + [types #.types (List [Text [(List Ident) Bit Type]])] [hash #.module-hash Nat] ) @@ -224,7 +224,7 @@ (wrap []))) (def: #export (declare-tags tags exported? type) - (-> (List Tag) Bool Type (Operation Any)) + (-> (List Tag) Bit Type (Operation Any)) (do ///.Monad<Operation> [self-name (extension.lift macro.current-module-name) [type-module type-name] (case type diff --git a/stdlib/source/lux/language/compiler/analysis/primitive.lux b/stdlib/source/lux/language/compiler/analysis/primitive.lux index eabbcb7d8..346906909 100644 --- a/stdlib/source/lux/language/compiler/analysis/primitive.lux +++ b/stdlib/source/lux/language/compiler/analysis/primitive.lux @@ -14,7 +14,7 @@ [_ (typeA.infer <type>)] (wrap (#//.Primitive (<tag> value)))))] - [bool Bool #//.Bool] + [bit Bit #//.Bit] [nat Nat #//.Nat] [int Int #//.Int] [rev Rev #//.Rev] diff --git a/stdlib/source/lux/language/compiler/analysis/scope.lux b/stdlib/source/lux/language/compiler/analysis/scope.lux index 2468ede27..3ee0499e8 100644 --- a/stdlib/source/lux/language/compiler/analysis/scope.lux +++ b/stdlib/source/lux/language/compiler/analysis/scope.lux @@ -21,7 +21,7 @@ (type: Foreign (Bindings Text [Type Variable])) (def: (local? name scope) - (-> Text Scope Bool) + (-> Text Scope Bit) (|> scope (get@ [#.locals #.mappings]) (plist.contains? name))) @@ -35,7 +35,7 @@ [type (#reference.Local value)])))) (def: (captured? name scope) - (-> Text Scope Bool) + (-> Text Scope Bit) (|> scope (get@ [#.captured #.mappings]) (plist.contains? name))) @@ -54,7 +54,7 @@ (recur (inc idx) mappings'))))) (def: (reference? name scope) - (-> Text Scope Bool) + (-> Text Scope Bit) (or (local? name scope) (captured? name scope))) diff --git a/stdlib/source/lux/language/compiler/default/repl/type.lux b/stdlib/source/lux/language/compiler/default/repl/type.lux index 84f063e0c..c9b68c06e 100644 --- a/stdlib/source/lux/language/compiler/default/repl/type.lux +++ b/stdlib/source/lux/language/compiler/default/repl/type.lux @@ -40,7 +40,7 @@ [_ (poly.similar <type>)] (wrap (|>> (:coerce <type>) <formatter>)))] - [Bool %b] + [Bit %b] [Nat %n] [Int %i] [Rev %r] diff --git a/stdlib/source/lux/language/compiler/extension/analysis/common.lux b/stdlib/source/lux/language/compiler/extension/analysis/common.lux index 55d479052..9616f2533 100644 --- a/stdlib/source/lux/language/compiler/extension/analysis/common.lux +++ b/stdlib/source/lux/language/compiler/extension/analysis/common.lux @@ -63,7 +63,7 @@ (function (_ extension-name analyse args) (do ////.Monad<Operation> [[var-id varT] (typeA.with-env tc.var)] - ((binary varT varT Bool extension-name) + ((binary varT varT Bit extension-name) analyse args)))) ## "lux try" provides a simple way to interact with the host platform's @@ -167,8 +167,8 @@ (bundle.install "*" (binary Int Int Int)) (bundle.install "/" (binary Int Int Int)) (bundle.install "%" (binary Int Int Int)) - (bundle.install "=" (binary Int Int Bool)) - (bundle.install "<" (binary Int Int Bool)) + (bundle.install "=" (binary Int Int Bit)) + (bundle.install "<" (binary Int Int Bit)) (bundle.install "to-frac" (unary Int Frac)) (bundle.install "char" (unary Int Text))))) @@ -181,8 +181,8 @@ (bundle.install "*" (binary Frac Frac Frac)) (bundle.install "/" (binary Frac Frac Frac)) (bundle.install "%" (binary Frac Frac Frac)) - (bundle.install "=" (binary Frac Frac Bool)) - (bundle.install "<" (binary Frac Frac Bool)) + (bundle.install "=" (binary Frac Frac Bit)) + (bundle.install "<" (binary Frac Frac Bit)) (bundle.install "smallest" (nullary Frac)) (bundle.install "min" (nullary Frac)) (bundle.install "max" (nullary Frac)) @@ -195,8 +195,8 @@ Bundle (<| (bundle.prefix "text") (|> bundle.empty - (bundle.install "=" (binary Text Text Bool)) - (bundle.install "<" (binary Text Text Bool)) + (bundle.install "=" (binary Text Text Bit)) + (bundle.install "<" (binary Text Text Bit)) (bundle.install "concat" (binary Text Text Text)) (bundle.install "index" (trinary Text Text Nat (type (Maybe Nat)))) (bundle.install "size" (unary Text Nat)) @@ -289,7 +289,7 @@ (function (_ extension-name analyse args) (do ////.Monad<Operation> [[var-id varT] (typeA.with-env tc.var)] - ((trinary (type (Atom varT)) varT varT Bool extension-name) + ((trinary (type (Atom varT)) varT varT Bit extension-name) analyse args)))) (def: bundle::atom diff --git a/stdlib/source/lux/language/compiler/extension/analysis/host.jvm.lux b/stdlib/source/lux/language/compiler/extension/analysis/host.jvm.lux index d25be6e40..876448b5b 100644 --- a/stdlib/source/lux/language/compiler/extension/analysis/host.jvm.lux +++ b/stdlib/source/lux/language/compiler/extension/analysis/host.jvm.lux @@ -167,8 +167,8 @@ (bundle.install "*" (common.binary <type> <type> <type>)) (bundle.install "/" (common.binary <type> <type> <type>)) (bundle.install "%" (common.binary <type> <type> <type>)) - (bundle.install "=" (common.binary <type> <type> Boolean)) - (bundle.install "<" (common.binary <type> <type> Boolean)) + (bundle.install "=" (common.binary <type> <type> Bit)) + (bundle.install "<" (common.binary <type> <type> Bit)) (bundle.install "and" (common.binary <type> <type> <type>)) (bundle.install "or" (common.binary <type> <type> <type>)) (bundle.install "xor" (common.binary <type> <type> <type>)) @@ -191,8 +191,8 @@ (bundle.install "*" (common.binary <type> <type> <type>)) (bundle.install "/" (common.binary <type> <type> <type>)) (bundle.install "%" (common.binary <type> <type> <type>)) - (bundle.install "=" (common.binary <type> <type> Boolean)) - (bundle.install "<" (common.binary <type> <type> Boolean)) + (bundle.install "=" (common.binary <type> <type> Bit)) + (bundle.install "<" (common.binary <type> <type> Bit)) )))] [bundle::float "float" Float] @@ -203,8 +203,8 @@ Bundle (<| (bundle.prefix "char") (|> bundle.empty - (bundle.install "=" (common.binary Character Character Boolean)) - (bundle.install "<" (common.binary Character Character Boolean)) + (bundle.install "=" (common.binary Character Character Bit)) + (bundle.install "<" (common.binary Character Character Bit)) ))) (def: #export boxes @@ -398,7 +398,7 @@ (case args (^ (list objectC)) (do ////.Monad<Operation> - [_ (typeA.infer Bool) + [_ (typeA.infer Bit) [objectT objectA] (typeA.with-inference (analyse objectC)) _ (check-object objectT)] @@ -493,7 +493,7 @@ (////.throw unknown-class name)))) (def: (sub-class? super sub) - (-> Text Text (Operation Bool)) + (-> Text Text (Operation Bit)) (do ////.Monad<Operation> [super (load-class super) sub (load-class sub)] @@ -545,7 +545,7 @@ (case classC [_ (#.Text class)] (do ////.Monad<Operation> - [_ (typeA.infer Bool) + [_ (typeA.infer Bit) [objectT objectA] (typeA.with-inference (analyse objectC)) object-class (check-object objectT) @@ -674,7 +674,7 @@ [valueT valueA] (typeA.with-inference (analyse valueC)) from-name (check-jvm valueT) - can-cast? (: (Operation Bool) + can-cast? (: (Operation Bit) (case [from-name to-name] (^template [<primitive> <object>] (^or [<primitive> <object>] @@ -773,7 +773,7 @@ (////.throw unknown-field (format class-name "#" field-name))))) (def: (static-field class-name field-name) - (-> Text Text (Operation [Type Bool])) + (-> Text Text (Operation [Type Bit])) (do ////.Monad<Operation> [[class fieldJ] (find-field class-name field-name) #let [modifiers (Field::getModifiers [] fieldJ)]] @@ -785,7 +785,7 @@ (////.throw not-a-static-field (format class-name "#" field-name))))) (def: (virtual-field class-name field-name objectT) - (-> Text Text Type (Operation [Type Bool])) + (-> Text Text Type (Operation [Type Bit])) (do ////.Monad<Operation> [[class fieldJ] (find-field class-name field-name) #let [modifiers (Field::getModifiers [] fieldJ)]] @@ -927,7 +927,7 @@ #Interface) (def: (check-method class method-name method-style arg-classes method) - (-> (Class Object) Text Method-Style (List Text) Method (Operation Bool)) + (-> (Class Object) Text Method-Style (List Text) Method (Operation Bit)) (do ////.Monad<Operation> [parameters (|> (Method::getGenericParameterTypes [] method) array.to-list @@ -956,7 +956,7 @@ (list.zip2 arg-classes parameters)))))) (def: (check-constructor class arg-classes constructor) - (-> (Class Object) (List Text) (Constructor Object) (Operation Bool)) + (-> (Class Object) (List Text) (Constructor Object) (Operation Bit)) (do ////.Monad<Operation> [parameters (|> (Constructor::getGenericParameterTypes [] constructor) array.to-list diff --git a/stdlib/source/lux/language/compiler/meta/cache.lux b/stdlib/source/lux/language/compiler/meta/cache.lux index 753a66e89..4a35d81d4 100644 --- a/stdlib/source/lux/language/compiler/meta/cache.lux +++ b/stdlib/source/lux/language/compiler/meta/cache.lux @@ -5,7 +5,7 @@ ["ex" exception (#+ exception:)] pipe] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [maybe] [error] [product] @@ -82,7 +82,7 @@ (do @ [_ (..delete System<m> file)] (wrap true))))))] - [(list.every? (bool/= true)) + [(list.every? (bit/= true)) (if> [(..delete System<m> document)] [(wrap [])])])))) @@ -91,7 +91,7 @@ (|> root (do> (:: System<m> &monad) [(..cached System<m>)] - [(list.filter (bool.complement (set.member? wanted-modules))) + [(list.filter (bit.complement (set.member? wanted-modules))) (monad.map @ (un-install System<m> root))]))) ## Load diff --git a/stdlib/source/lux/language/compiler/synthesis.lux b/stdlib/source/lux/language/compiler/synthesis.lux index 05be98f3c..202260fa2 100644 --- a/stdlib/source/lux/language/compiler/synthesis.lux +++ b/stdlib/source/lux/language/compiler/synthesis.lux @@ -15,7 +15,7 @@ (type: #export State {#scope-arity Arity #resolver Resolver - #direct? Bool + #direct? Bit #locals Nat}) (def: #export fresh-resolver @@ -30,7 +30,7 @@ #locals +0}) (type: #export Primitive - (#Bool Bool) + (#Bit Bit) (#I64 I64) (#F64 Frac) (#Text Text)) @@ -110,7 +110,7 @@ [(template: #export (<name> content) (#..Test (<tag> content)))] - [path/bool #..Bool] + [path/bit #..Bit] [path/i64 #..I64] [path/f64 #..F64] [path/text #..Text] @@ -187,7 +187,7 @@ [scope-arity #scope-arity Arity] [resolver #resolver Resolver] - [direct? #direct? Bool] + [direct? #direct? Bit] [locals #locals Nat] ) @@ -201,7 +201,7 @@ [(template: #export (<name> content) (#..Primitive (<tag> content)))] - [bool #..Bool] + [bit #..Bit] [i64 #..I64] [f64 #..F64] [text #..Text] diff --git a/stdlib/source/lux/language/compiler/synthesis/case.lux b/stdlib/source/lux/language/compiler/synthesis/case.lux index de7a4f9fd..0c23d1f52 100644 --- a/stdlib/source/lux/language/compiler/synthesis/case.lux +++ b/stdlib/source/lux/language/compiler/synthesis/case.lux @@ -6,7 +6,7 @@ [monad (#+ do)]] [data [product] - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [text ("text/" Equivalence<Text>) format] [number ("frac/" Equivalence<Frac>)] @@ -30,7 +30,7 @@ (<from> value) (operation/map (|>> (#//.Seq (#//.Test (|> value <to>)))) bodyC)) - ([#analysis.Bool #//.Bool] + ([#analysis.Bit #//.Bit] [#analysis.Nat (<| #//.I64 .i64)] [#analysis.Int (<| #//.I64 .i64)] [#analysis.Rev (<| #//.I64 .i64)] @@ -101,7 +101,7 @@ (if (<eq> leftV rightV) rightP <default>)) - ([#//.Bool bool/=] + ([#//.Bit bit/=] [#//.I64 (:coerce (Equivalence I64) i/=)] [#//.F64 frac/=] [#//.Text text/=]) @@ -152,10 +152,10 @@ headB/bodyS]))))) <if> - (as-is (^or (^ [[(analysis.pattern/bool true) thenA] - (list [(analysis.pattern/bool false) elseA])]) - (^ [[(analysis.pattern/bool false) elseA] - (list [(analysis.pattern/bool true) thenA])])) + (as-is (^or (^ [[(analysis.pattern/bit true) thenA] + (list [(analysis.pattern/bit false) elseA])]) + (^ [[(analysis.pattern/bit false) elseA] + (list [(analysis.pattern/bit true) thenA])])) (do @ [thenS (synthesize^ thenA) elseS (synthesize^ elseA)] diff --git a/stdlib/source/lux/language/compiler/synthesis/expression.lux b/stdlib/source/lux/language/compiler/synthesis/expression.lux index 80480de68..0d780d444 100644 --- a/stdlib/source/lux/language/compiler/synthesis/expression.lux +++ b/stdlib/source/lux/language/compiler/synthesis/expression.lux @@ -29,7 +29,7 @@ (^template [<analysis> <synthesis>] (<analysis> value) (<synthesis> value)) - ([#analysis.Bool #//.Bool] + ([#analysis.Bit #//.Bit] [#analysis.Frac #//.F64] [#analysis.Text #//.Text]) diff --git a/stdlib/source/lux/language/compiler/synthesis/function.lux b/stdlib/source/lux/language/compiler/synthesis/function.lux index 92e75dc94..67f0dda46 100644 --- a/stdlib/source/lux/language/compiler/synthesis/function.lux +++ b/stdlib/source/lux/language/compiler/synthesis/function.lux @@ -19,11 +19,11 @@ [analysis (#+ Environment Arity Analysis)]]]]) (def: #export nested? - (-> Arity Bool) + (-> Arity Bit) (n/> +1)) (def: #export (adjust up-arity after? var) - (-> Arity Bool Variable Variable) + (-> Arity Bit Variable Variable) (case var (#reference.Local register) (if (and after? (n/>= up-arity register)) diff --git a/stdlib/source/lux/language/compiler/synthesis/loop.lux b/stdlib/source/lux/language/compiler/synthesis/loop.lux index 564fe5421..eeb1adcc7 100644 --- a/stdlib/source/lux/language/compiler/synthesis/loop.lux +++ b/stdlib/source/lux/language/compiler/synthesis/loop.lux @@ -19,7 +19,7 @@ (-> a (Maybe a))) (def: (some? maybe) - (All [a] (-> (Maybe a) Bool)) + (All [a] (-> (Maybe a) Bit)) (case maybe (#.Some _) true #.None false)) @@ -30,11 +30,11 @@ (template: (recursive-apply args) (#//.Apply (self) args)) -(def: proper Bool true) -(def: improper Bool false) +(def: proper Bit true) +(def: improper Bit false) (def: (proper? exprS) - (-> Synthesis Bool) + (-> Synthesis Bit) (case exprS (^ (self)) improper diff --git a/stdlib/source/lux/language/compiler/translation/scheme/case.jvm.lux b/stdlib/source/lux/language/compiler/translation/scheme/case.jvm.lux index 3ef368c18..f7b1adb7a 100644 --- a/stdlib/source/lux/language/compiler/translation/scheme/case.jvm.lux +++ b/stdlib/source/lux/language/compiler/translation/scheme/case.jvm.lux @@ -28,7 +28,7 @@ bodyO)))) (def: #export (record-get translate valueS pathP) - (-> Compiler Synthesis (List [Nat Bool]) + (-> Compiler Synthesis (List [Nat Bit]) (Operation Expression)) (do compiler.Monad<Operation> [valueO (translate valueS)] @@ -118,7 +118,7 @@ (^ (<tag> value)) (operation/wrap (_.when (|> value <format> (<=> cursor-top) _.not/1) fail-pm!))) - ([synthesis.path/bool _.bool _.eqv?/2] + ([synthesis.path/bit _.bool _.eqv?/2] [synthesis.path/i64 _.int _.=/2] [synthesis.path/f64 _.float _.=/2] [synthesis.path/text _.string _.eqv?/2]) diff --git a/stdlib/source/lux/language/compiler/translation/scheme/expression.jvm.lux b/stdlib/source/lux/language/compiler/translation/scheme/expression.jvm.lux index d7ef01e61..3cbefbf69 100644 --- a/stdlib/source/lux/language/compiler/translation/scheme/expression.jvm.lux +++ b/stdlib/source/lux/language/compiler/translation/scheme/expression.jvm.lux @@ -19,7 +19,7 @@ (^template [<tag> <generator>] (^ (<tag> value)) (<generator> value)) - ([synthesis.bool primitive.bool] + ([synthesis.bit primitive.bit] [synthesis.i64 primitive.i64] [synthesis.f64 primitive.f64] [synthesis.text primitive.text]) diff --git a/stdlib/source/lux/language/compiler/translation/scheme/primitive.jvm.lux b/stdlib/source/lux/language/compiler/translation/scheme/primitive.jvm.lux index fea12c6c3..6ff146393 100644 --- a/stdlib/source/lux/language/compiler/translation/scheme/primitive.jvm.lux +++ b/stdlib/source/lux/language/compiler/translation/scheme/primitive.jvm.lux @@ -6,8 +6,8 @@ [host ["_" scheme (#+ Expression)]]] [//runtime (#+ Operation)]) -(def: #export bool - (-> Bool (Operation Expression)) +(def: #export bit + (-> Bit (Operation Expression)) (|>> _.bool operation/wrap)) (def: #export i64 diff --git a/stdlib/source/lux/language/compiler/translation/scheme/runtime.jvm.lux b/stdlib/source/lux/language/compiler/translation/scheme/runtime.jvm.lux index a1ce941d2..a84677144 100644 --- a/stdlib/source/lux/language/compiler/translation/scheme/runtime.jvm.lux +++ b/stdlib/source/lux/language/compiler/translation/scheme/runtime.jvm.lux @@ -33,7 +33,7 @@ (def: #export variant-tag "lux-variant") (def: (flag value) - (-> Bool Computation) + (-> Bit Computation) (if value (_.string "") _.nil)) diff --git a/stdlib/source/lux/language/host/scheme.lux b/stdlib/source/lux/language/host/scheme.lux index f93f3b671..d2edd6fac 100644 --- a/stdlib/source/lux/language/host/scheme.lux +++ b/stdlib/source/lux/language/host/scheme.lux @@ -62,7 +62,7 @@ (:abstraction "'()")) (def: #export bool - (-> Bool Computation) + (-> Bit Computation) (|>> (case> true "#t" false "#f") :abstraction)) diff --git a/stdlib/source/lux/language/reference.lux b/stdlib/source/lux/language/reference.lux index 0e66497a1..0f4ee03a5 100644 --- a/stdlib/source/lux/language/reference.lux +++ b/stdlib/source/lux/language/reference.lux @@ -58,7 +58,7 @@ (def: #export self Reference (..local +0)) (def: #export self? - (-> Variable Bool) + (-> Variable Bit) (|>> ..variable (case> (^ (..local +0)) true diff --git a/stdlib/source/lux/language/syntax.lux b/stdlib/source/lux/language/syntax.lux index e924694c3..e31356dcb 100644 --- a/stdlib/source/lux/language/syntax.lux +++ b/stdlib/source/lux/language/syntax.lux @@ -580,7 +580,7 @@ [where (case value (^template [<name> <value>] ["" <name>] - (#.Bool <value>)) + (#.Bit <value>)) (["true" true] ["false" false]) @@ -591,9 +591,9 @@ module) (exception: #export (unrecognized-input {[file line column] Cursor}) - (format " File: " file "\n" - " Line: " (%n line) "\n" - "Column: " (%n column) "\n")) + (ex.report ["File" file] + ["Line" (%n line)] + ["Column" (%n column)])) (def: (ast current-module aliases) (-> Text Aliases Cursor (l.Lexer [Cursor Code])) diff --git a/stdlib/source/lux/language/type.lux b/stdlib/source/lux/language/type.lux index 09c30fd03..cdb43422d 100644 --- a/stdlib/source/lux/language/type.lux +++ b/stdlib/source/lux/language/type.lux @@ -313,7 +313,7 @@ ) (def: #export (quantified? type) - (-> Type Bool) + (-> Type Bit) (case type (#.Named [module name] _type) (quantified? _type) diff --git a/stdlib/source/lux/language/type/check.lux b/stdlib/source/lux/language/type/check.lux index 60864008f..3308c497b 100644 --- a/stdlib/source/lux/language/type/check.lux +++ b/stdlib/source/lux/language/type/check.lux @@ -39,7 +39,7 @@ (type: #export Assumption {#subsumption [Type Type] - #verdict Bool}) + #verdict Bit}) (type: #export (Check a) (-> Type-Context (e.Error [Type-Context a]))) @@ -186,7 +186,7 @@ #.None (ex.throw unknown-type-var id))))] - [bound? Bool false true] + [bound? Bit false true] [read (Maybe Type) #.None (#.Some bound)] ) @@ -320,7 +320,7 @@ (#e.Error message))) (def: #export (assert message test) - (-> Text Bool (Check Any)) + (-> Text Bit (Check Any)) (function (_ context) (if test (#e.Success [context []]) @@ -337,7 +337,7 @@ (right context)))) (def: (assumed? [e a] assumptions) - (-> [Type Type] (List Assumption) (Maybe Bool)) + (-> [Type Type] (List Assumption) (Maybe Bit)) (:: maybe.Monad<Maybe> map product.right (list.find (function (_ [[fe fa] status]) (and (type/= e fe) @@ -345,7 +345,7 @@ assumptions))) (def: (assume! ea status assumptions) - (-> [Type Type] Bool (List Assumption) (List Assumption)) + (-> [Type Type] Bit (List Assumption) (List Assumption)) (#.Cons [ea status] assumptions)) (def: (on id type then else) @@ -633,7 +633,7 @@ (def: #export (checks? expected actual) {#.doc "A simple type-checking function that just returns a yes/no answer."} - (-> Type Type Bool) + (-> Type Type Bit) (case (run fresh-context (check expected actual)) (#e.Error error) false diff --git a/stdlib/source/lux/macro.lux b/stdlib/source/lux/macro.lux index a39168fa7..d063f1ab2 100644 --- a/stdlib/source/lux/macro.lux +++ b/stdlib/source/lux/macro.lux @@ -98,7 +98,7 @@ (def: #export (assert message test) {#.doc "Fails with the given message if the test is false."} - (-> Text Bool (Meta Any)) + (-> Text Bit (Meta Any)) (function (_ compiler) (if test (#e.Success [compiler []]) @@ -171,7 +171,7 @@ _ #.None))] - [get-bool-ann #.Bool Bool] + [get-bit-ann #.Bit Bit] [get-int-ann #.Int Int] [get-frac-ann #.Frac Frac] [get-text-ann #.Text Text] @@ -189,13 +189,13 @@ (def: #export (flag-set? flag-name anns) {#.doc "Finds out whether an annotation-as-a-flag is set (has value 'true')."} - (-> Ident Code Bool) - (maybe.default false (get-bool-ann flag-name anns))) + (-> Ident Code Bit) + (maybe.default false (get-bit-ann flag-name anns))) (do-template [<name> <tag> <desc>] [(def: #export <name> {#.doc (code.text ($_ text/compose "Checks whether a definition is " <desc> "."))} - (-> Code Bool) + (-> Code Bit) (flag-set? (ident-for <tag>)))] [export? #.export? "exported"] @@ -207,7 +207,7 @@ ) (def: #export (aliased? annotations) - (-> Code Bool) + (-> Code Bit) (case (get-symbol-ann (ident-for #.alias) annotations) (#.Some _) true @@ -417,7 +417,7 @@ (fail "Macro expanded to more than 1 element.")))) (def: #export (module-exists? module) - (-> Text (Meta Bool)) + (-> Text (Meta Bit)) (function (_ compiler) (#e.Success [compiler (case (get module (get@ #.modules compiler)) (#.Some _) @@ -465,7 +465,7 @@ {#.doc "Looks-up the type of a local variable somewhere in the environment."} (-> Text (Meta Type)) (function (_ compiler) - (let [test (: (-> [Text [Type Any]] Bool) + (let [test (: (-> [Text [Type Any]] Bit) (|>> product.left (text/= name)))] (case (do maybe.Monad<Maybe> [scope (list.find (function (_ env) @@ -607,13 +607,13 @@ (wrap imports))) (def: #export (imported-by? import module) - (-> Text Text (Meta Bool)) + (-> Text Text (Meta Bit)) (do Monad<Meta> [(^slots [#.imports]) (find-module module)] (wrap (list.any? (text/= import) imports)))) (def: #export (imported? import) - (-> Text (Meta Bool)) + (-> Text (Meta Bit)) (let [(^open) Monad<Meta>] (|> current-module-name (map find-module) join @@ -697,7 +697,7 @@ (def: (foo bar baz) (-> Int Int Int) (i/+ bar baz))))} - (case (: (Maybe [Bool Code]) + (case (: (Maybe [Bit Code]) (case tokens (^ (list [_ (#.Tag ["" "omit"])] token)) diff --git a/stdlib/source/lux/macro/code.lux b/stdlib/source/lux/macro/code.lux index d8763c3e5..67be6ce56 100644 --- a/stdlib/source/lux/macro/code.lux +++ b/stdlib/source/lux/macro/code.lux @@ -1,17 +1,18 @@ (.module: [lux (#- nat int rev) - [control [equivalence (#+ Equivalence)]] + [control + [equivalence (#+ Equivalence)]] [data - bool + bit number [text (#+ Equivalence<Text>) ("text/" Monoid<Text>)] ident - [collection [list #* ("list/" Functor<List> Fold<List>)]] + [collection [list ("list/" Functor<List> Fold<List>)]] ]]) ## [Types] ## (type: (Code' w) -## (#.Bool Bool) +## (#.Bit Bit) ## (#.Nat Nat) ## (#.Int Int) ## (#.Frac Frac) @@ -34,7 +35,7 @@ (-> <type> Code) [_cursor (<tag> x)])] - [bool Bool #.Bool] + [bit Bit #.Bit] [nat Nat #.Nat] [int Int #.Int] [rev Rev #.Rev] @@ -63,7 +64,7 @@ (^template [<tag> <eq>] [[_ (<tag> x')] [_ (<tag> y')]] (:: <eq> = x' y')) - ([#.Bool Equivalence<Bool>] + ([#.Bit Equivalence<Bit>] [#.Nat Equivalence<Nat>] [#.Int Equivalence<Int>] [#.Rev Equivalence<Rev>] @@ -74,20 +75,13 @@ (^template [<tag>] [[_ (<tag> xs')] [_ (<tag> ys')]] - (and (:: Equivalence<Nat> = (size xs') (size ys')) - (list/fold (function (_ [x' y'] old) - (and old (= x' y'))) - true - (zip2 xs' ys')))) + (:: (list.Equivalence<List> =) = xs' ys')) ([#.Form] [#.Tuple]) [[_ (#.Record xs')] [_ (#.Record ys')]] - (and (:: Equivalence<Nat> = (size xs') (size ys')) - (list/fold (function (_ [[xl' xr'] [yl' yr']] old) - (and old (= xl' yl') (= xr' yr'))) - true - (zip2 xs' ys'))) + (:: (list.Equivalence<List> (equivalence.product = =)) + = xs' ys') _ false))) @@ -99,7 +93,7 @@ (^template [<tag> <struct>] [_ (<tag> value)] (:: <struct> encode value)) - ([#.Bool Codec<Text,Bool>] + ([#.Bit Codec<Text,Bit>] [#.Nat Codec<Text,Nat>] [#.Int Codec<Text,Int>] [#.Rev Codec<Text,Rev>] @@ -114,12 +108,19 @@ (^template [<tag> <open> <close>] [_ (<tag> members)] - ($_ text/compose <open> (|> members (list/map to-text) (interpose " ") (text.join-with "")) <close>)) + ($_ text/compose <open> (|> members (list/map to-text) (list.interpose " ") (text.join-with "")) <close>)) ([#.Form "(" ")"] [#.Tuple "[" "]"]) [_ (#.Record pairs)] - ($_ text/compose "{" (|> pairs (list/map (function (_ [left right]) ($_ text/compose (to-text left) " " (to-text right)))) (interpose " ") (text.join-with "")) "}") + ($_ text/compose + "{" + (|> pairs + (list/map (function (_ [left right]) + ($_ text/compose (to-text left) " " (to-text right)))) + (list.interpose " ") + (text.join-with "")) + "}") )) (def: #export (replace original substitute ast) diff --git a/stdlib/source/lux/macro/poly.lux b/stdlib/source/lux/macro/poly.lux index 7a7375e12..7c86a952a 100644 --- a/stdlib/source/lux/macro/poly.lux +++ b/stdlib/source/lux/macro/poly.lux @@ -13,7 +13,7 @@ ["dict" dictionary (#+ Dictionary)]] [number ("nat/" Codec<Text,Nat>)] [product] - [bool] + [bit] [maybe] [ident ("ident/" Equivalence<Ident> Codec<Text,Ident>)] ["e" error]] @@ -354,7 +354,7 @@ ((~' wrap) (.list (~ g!output)))))))))))) (def: (common-poly-name? poly-func) - (-> Text Bool) + (-> Text Bit) (text.contains? "?" poly-func)) (def: (derivation-name poly args) diff --git a/stdlib/source/lux/macro/poly/equivalence.lux b/stdlib/source/lux/macro/poly/equivalence.lux index 189179e13..66bc621ca 100644 --- a/stdlib/source/lux/macro/poly/equivalence.lux +++ b/stdlib/source/lux/macro/poly/equivalence.lux @@ -17,7 +17,7 @@ [tree [rose]]] [number ("nat/" Codec<Text,Nat>)] [product] - [bool] + [bit] [maybe]] [time ["du" duration] @@ -50,7 +50,7 @@ <eq>))))] [(poly.exactly Any) (function ((~ g!_) (~ g!_) (~ g!_)) true)] - [(poly.similar Bool) bool.Equivalence<Bool>] + [(poly.similar Bit) bit.Equivalence<Bit>] [(poly.similar Nat) number.Equivalence<Nat>] [(poly.similar Int) number.Equivalence<Int>] [(poly.similar Rev) number.Equivalence<Rev>] diff --git a/stdlib/source/lux/macro/poly/json.lux b/stdlib/source/lux/macro/poly/json.lux index 0474c3d4b..1f5b4aab6 100644 --- a/stdlib/source/lux/macro/poly/json.lux +++ b/stdlib/source/lux/macro/poly/json.lux @@ -6,7 +6,7 @@ codec ["p" parser]] [data - [bool] + [bit] maybe ["e" error] [sum] @@ -91,7 +91,7 @@ <encoder>))))] [(poly.exactly Any) (function ((~ g!_) (~ (code.symbol ["" "0"]))) #//.Null)] - [(poly.similar Bool) (|>> #//.Boolean)] + [(poly.similar Bit) (|>> #//.Boolean)] [(poly.similar Nat) (:: (~! ..Codec<JSON,Nat>) (~' encode))] [(poly.similar Int) (:: (~! ..Codec<JSON,Int>) (~' encode))] [(poly.similar Frac) (|>> #//.Number)] @@ -206,8 +206,8 @@ (wrap (` (: (~ (@JSON//decode inputT)) <decoder>))))] - [(poly.exactly Any) //.null] - [(poly.similar Bool) //.boolean] + [(poly.exactly Any) //.null] + [(poly.similar Bit) //.boolean] [(poly.similar Nat) (p.codec (~! ..Codec<JSON,Nat>) //.any)] [(poly.similar Int) (p.codec (~! ..Codec<JSON,Int>) //.any)] [(poly.similar Frac) //.number] @@ -296,18 +296,18 @@ (syntax: #export (Codec<JSON,?> inputT) {#.doc (doc "A macro for automatically producing JSON codecs." (type: Variant - (#Case0 Bool) + (#Case0 Bit) (#Case1 Text) (#Case2 Frac)) (type: Record - {#bool Bool + {#bit Bit #frac Frac #text Text #maybe (Maybe Frac) #list (List Frac) #variant Variant - #tuple [Bool Frac Text] + #tuple [Bit Frac Text] #dict (Dictionary Text Frac)}) (derived: (Codec<JSON,?> Record)))} diff --git a/stdlib/source/lux/macro/syntax.lux b/stdlib/source/lux/macro/syntax.lux index 3b6623b3e..630dd5a0e 100644 --- a/stdlib/source/lux/macro/syntax.lux +++ b/stdlib/source/lux/macro/syntax.lux @@ -6,7 +6,7 @@ [equivalence (#+ Equivalence)] ["p" parser]] [data - [bool] + [bit] [number] [text ("text/" Monoid<Text>)] [ident] @@ -54,7 +54,7 @@ _ (#error.Error ($_ text/compose "Cannot parse " <desc> (remaining-inputs tokens))))))] - [ bool Bool #.Bool bool.Equivalence<Bool> "bool"] + [ bit Bit #.Bit bit.Equivalence<Bit> "bit"] [ nat Nat #.Nat number.Equivalence<Nat> "nat"] [ int Int #.Int number.Equivalence<Int> "int"] [ rev Rev #.Rev number.Equivalence<Rev> "rev"] @@ -66,7 +66,7 @@ (def: #export (this? ast) {#.doc "Asks if the given Code is the next input."} - (-> Code (Syntax Bool)) + (-> Code (Syntax Bit)) (function (_ tokens) (case tokens (#.Cons [token tokens']) @@ -152,7 +152,7 @@ (def: #export end? {#.doc "Checks whether there are no more inputs."} - (Syntax Bool) + (Syntax Bit) (function (_ tokens) (case tokens #.Nil (#error.Success [tokens true]) @@ -212,7 +212,7 @@ (with-brackets (spaced (list/map constructor-arg$ constructor-args))) (with-brackets (spaced (list/map (method-def$ id) methods))))))] (wrap (list (` ((~ (code.text def-code)))))))))} - (let [[exported? tokens] (: [Bool (List Code)] + (let [[exported? tokens] (: [Bit (List Code)] (case tokens (^ (list& [_ (#.Tag ["" "export"])] tokens')) [true tokens'] diff --git a/stdlib/source/lux/macro/syntax/common/reader.lux b/stdlib/source/lux/macro/syntax/common/reader.lux index 58a502c56..408edae91 100644 --- a/stdlib/source/lux/macro/syntax/common/reader.lux +++ b/stdlib/source/lux/macro/syntax/common/reader.lux @@ -14,7 +14,7 @@ ## Exports (def: #export export - (Syntax Bool) + (Syntax Bit) (p.either (p.after (s.this (' #export)) (parser/wrap true)) (parser/wrap false))) diff --git a/stdlib/source/lux/macro/syntax/common/writer.lux b/stdlib/source/lux/macro/syntax/common/writer.lux index d482bc2c3..7a7416894 100644 --- a/stdlib/source/lux/macro/syntax/common/writer.lux +++ b/stdlib/source/lux/macro/syntax/common/writer.lux @@ -8,7 +8,7 @@ [//]) (def: #export (export exported?) - (-> Bool (List Code)) + (-> Bit (List Code)) (if exported? (list (' #export)) (list))) diff --git a/stdlib/source/lux/math.lux b/stdlib/source/lux/math.lux index c04f31c73..d90db4a33 100644 --- a/stdlib/source/lux/math.lux +++ b/stdlib/source/lux/math.lux @@ -192,7 +192,7 @@ (<| p.rec (function (_ infix^)) ($_ p.alt ($_ p.either - (parser/map code.bool s.bool) + (parser/map code.bit s.bit) (parser/map code.nat s.nat) (parser/map code.int s.int) (parser/map code.rev s.rev) diff --git a/stdlib/source/lux/math/modular.lux b/stdlib/source/lux/math/modular.lux index cef3cbf6f..bb15adac1 100644 --- a/stdlib/source/lux/math/modular.lux +++ b/stdlib/source/lux/math/modular.lux @@ -48,7 +48,7 @@ " Sample: " (int/encode (to-int sample)) "\n")) (def: #export (congruent? modulus reference sample) - (All [m] (-> (Modulus m) Int Int Bool)) + (All [m] (-> (Modulus m) Int Int Bit)) (|> sample (i/- reference) (i/% (to-int modulus)) @@ -116,7 +116,7 @@ (do-template [<name> <op>] [(def: #export (<name> reference sample) - (All [m] (-> (Mod m) (Mod m) Bool)) + (All [m] (-> (Mod m) (Mod m) Bit)) (let [[reference _] (:representation reference) [sample _] (:representation sample)] (<op> reference sample)))] diff --git a/stdlib/source/lux/math/random.lux b/stdlib/source/lux/math/random.lux index 2ddb64f32..86c7d9efd 100644 --- a/stdlib/source/lux/math/random.lux +++ b/stdlib/source/lux/math/random.lux @@ -63,7 +63,7 @@ (def: #export (filter pred gen) {#.doc "Retries the generator until the output satisfies a predicate."} - (All [a] (-> (-> a Bool) (Random a) (Random a))) + (All [a] (-> (-> a Bit) (Random a) (Random a))) (do Monad<Random> [sample gen] (if (pred sample) @@ -82,8 +82,8 @@ #.None (refine refiner gen)))) -(def: #export bool - (Random Bool) +(def: #export bit + (Random Bit) (function (_ prng) (let [[prng output] (prng [])] [prng (|> output (i64.and +1) (n/= +1))]))) @@ -164,7 +164,7 @@ {#.doc "Heterogeneous alternative combinator."} (All [a b] (-> (Random a) (Random b) (Random (| a b)))) (do Monad<Random> - [? bool] + [? bit] (if ? (do @ [=left left] @@ -177,7 +177,7 @@ {#.doc "Homogeneous alternative combinator."} (All [a] (-> (Random a) (Random a) (Random a))) (do Monad<Random> - [? bool] + [? bit] (if ? left right))) @@ -192,7 +192,7 @@ (def: #export (maybe value-gen) (All [a] (-> (Random a) (Random (Maybe a)))) (do Monad<Random> - [some? bool] + [some? bit] (if some? (do @ [value value-gen] diff --git a/stdlib/source/lux/test.lux b/stdlib/source/lux/test.lux index 00cbcca91..d4fb7108f 100644 --- a/stdlib/source/lux/test.lux +++ b/stdlib/source/lux/test.lux @@ -49,7 +49,7 @@ (def: #export (assert message condition) {#.doc "Check that a condition is true, and fail with the given message otherwise."} - (-> Text Bool (Promise [Counters Text])) + (-> Text Bit (Promise [Counters Text])) (<| (:: promise.Monad<Promise> wrap) (if condition [success (format "[Success] " message)] @@ -57,7 +57,7 @@ (def: #export (test message condition) {#.doc "Check that a condition is true, and fail with the given message otherwise."} - (-> Text Bool Test) + (-> Text Bit Test) (:: r.Monad<Random> wrap (assert message condition))) (def: (run' tests) @@ -83,7 +83,7 @@ (wrap (list/fold add-counters start test-runs)))) (def: failed? - (-> Counters Bool) + (-> Counters Bit) (|>> product.right (n/> +0))) (def: #export (seed value test) diff --git a/stdlib/source/lux/time/date.lux b/stdlib/source/lux/time/date.lux index 068936f47..e80db8bac 100644 --- a/stdlib/source/lux/time/date.lux +++ b/stdlib/source/lux/time/date.lux @@ -198,7 +198,7 @@ (get@ #day sample))))) (def: (date/< reference sample) - (-> Date Date Bool) + (-> Date Date Bit) (or (i/< (get@ #year reference) (get@ #year sample)) (:: Order<Month> < @@ -265,11 +265,11 @@ (row.update [+1] inc normal-months)) (def: (divisible? factor input) - (-> Int Int Bool) + (-> Int Int Bit) (|> input (i/% factor) (i/= 0))) (def: (leap-year? year) - (-> Int Bool) + (-> Int Bit) (and (divisible? 4 year) (or (not (divisible? 100 year)) (divisible? 400 year)))) diff --git a/stdlib/source/lux/time/duration.lux b/stdlib/source/lux/time/duration.lux index 92e35a7fb..b9300b7c3 100644 --- a/stdlib/source/lux/time/duration.lux +++ b/stdlib/source/lux/time/duration.lux @@ -61,7 +61,7 @@ (do-template [<name> <op>] [(def: #export (<name> duration) - (-> Duration Bool) + (-> Duration Bit) (<op> 0 (:representation duration)))] [positive? i/>] diff --git a/stdlib/source/lux/time/instant.lux b/stdlib/source/lux/time/instant.lux index ce97cecea..9002ff9ef 100644 --- a/stdlib/source/lux/time/instant.lux +++ b/stdlib/source/lux/time/instant.lux @@ -80,11 +80,11 @@ ## Codec::encode (def: (divisible? factor input) - (-> Int Int Bool) + (-> Int Int Bit) (|> input (i/% factor) (i/= 0))) (def: (leap-year? year) - (-> Int Bool) + (-> Int Bit) (and (divisible? 4 year) (or (not (divisible? 100 year)) (divisible? 400 year)))) diff --git a/stdlib/source/lux/type/implicit.lux b/stdlib/source/lux/type/implicit.lux index 8e1c92f84..b2c747028 100644 --- a/stdlib/source/lux/type/implicit.lux +++ b/stdlib/source/lux/type/implicit.lux @@ -9,7 +9,6 @@ [number] [collection [list ("list/" Monad<List> Fold<List>)] ["dict" dictionary (#+ Dictionary)]] - [bool] [product] [maybe]] [macro (#+ Monad<Meta>) @@ -285,7 +284,7 @@ (do Monad<Meta> [alts import-structs] (test alts))))) (def: (var? input) - (-> Code Bool) + (-> Code Bit) (case input [_ (#.Symbol _)] true diff --git a/stdlib/source/lux/type/object/interface.lux b/stdlib/source/lux/type/object/interface.lux index c90965c2d..42284b4b3 100644 --- a/stdlib/source/lux/type/object/interface.lux +++ b/stdlib/source/lux/type/object/interface.lux @@ -98,7 +98,7 @@ (~ g!method))))) (def: (definition export [interface parameters] g!self-object g!ext g!states (^open)) - (-> Bool Declaration Code Code (List Code) Method Code) + (-> Bit Declaration Code Code (List Code) Method Code) (let [g!method (code.local-symbol name) g!parameters (list/map code.local-symbol parameters) g!type-vars (list/map code.local-symbol type-vars) @@ -125,7 +125,7 @@ (def: no-parent Ident ["" ""]) (def: (no-parent? parent) - (-> Ident Bool) + (-> Ident Bit) (ident/= no-parent parent)) (def: (with-interface parent interface) @@ -247,7 +247,7 @@ ) (def: (getterN export interface g!parameters g!ext g!child ancestors) - (-> Bool Text (List Code) Code Code (List Ident) + (-> Bit Text (List Code) Code Code (List Ident) Code) (let [g!get (code.local-symbol (getN interface)) g!interface (code.local-symbol interface) @@ -266,7 +266,7 @@ (~ g!_state)))))) (def: (setterN export interface g!parameters g!ext g!child ancestors) - (-> Bool Text (List Code) Code Code (List Ident) + (-> Bit Text (List Code) Code Code (List Ident) Code) (let [g!set (code.local-symbol (setN interface)) g!interface (code.local-symbol interface) @@ -289,7 +289,7 @@ (~ g!build-up)))))) (def: (updaterN export interface g!parameters g!ext g!child ancestors) - (-> Bool Text (List Code) Code Code (List Ident) + (-> Bit Text (List Code) Code Code (List Ident) Code) (let [g!update (code.local-symbol (updateN interface)) g!interface (code.local-symbol interface) diff --git a/stdlib/source/lux/type/object/protocol.lux b/stdlib/source/lux/type/object/protocol.lux index 495aaebd4..ebbf9cc4b 100644 --- a/stdlib/source/lux/type/object/protocol.lux +++ b/stdlib/source/lux/type/object/protocol.lux @@ -78,7 +78,7 @@ (Method (~ inputC) (~ outputC) (~ g!return))))))) (def: (method|c export protocol method) - (-> Bool cs.Declaration Method-Syntax (Meta Code)) + (-> Bit cs.Declaration Method-Syntax (Meta Code)) (let [methodC (code.local-symbol (get@ #method-name method)) tagC (code.local-tag (get@ #method-name method)) protocolC (code.local-symbol (get@ #cs.declaration-name protocol)) @@ -110,7 +110,7 @@ (` ((~ tagC) ((~ protocolC) (~ g!return)))))) (def: (class|c export protocol class) - (-> Bool cs.Declaration Class-Syntax (Meta Code)) + (-> Bit cs.Declaration Class-Syntax (Meta Code)) (let [classC (code.local-symbol (get@ #class-name class)) tagC (code.local-tag (get@ #class-name class)) protocolC (code.local-symbol (get@ #cs.declaration-name protocol)) @@ -138,7 +138,7 @@ (class|w g!return))) (def: (super|c export protocol) - (-> Bool cs.Declaration (| Method-Syntax Class-Syntax) (Meta Code)) + (-> Bit cs.Declaration (| Method-Syntax Class-Syntax) (Meta Code)) (sum.either (method|c export protocol) (class|c export protocol))) diff --git a/stdlib/source/lux/world/file.lux b/stdlib/source/lux/world/file.lux index d62c77182..6630f8a60 100644 --- a/stdlib/source/lux/world/file.lux +++ b/stdlib/source/lux/world/file.lux @@ -52,14 +52,14 @@ [last-modified Instant]) (do-template [<name>] - [(: (-> File (m Bool)) + [(: (-> File (m Bit)) <name>)] [file?] [directory?] ) - (: (-> Permission File (m Bool)) + (: (-> Permission File (m Bit)) can?) (do-template [<name>] @@ -240,7 +240,7 @@ })) (def: #export (exists? System<m> file) - (All [m] (-> (System m) File (m Bool))) + (All [m] (-> (System m) File (m Bit))) (|> file (do> (:: System<m> &monad) [(:: System<m> file?)] diff --git a/stdlib/test/test/lux/concurrency/promise.lux b/stdlib/test/test/lux/concurrency/promise.lux index f0b0bb865..29bab782c 100644 --- a/stdlib/test/test/lux/concurrency/promise.lux +++ b/stdlib/test/test/lux/concurrency/promise.lux @@ -61,7 +61,7 @@ (test "Cannot re-resolve a resolved promise." (and (not (io.run (&.resolve false (&/wrap true)))) - (io.run (&.resolve true (: (&.Promise Bool) (&.promise #.None)))))) + (io.run (&.resolve true (: (&.Promise Bit) (&.promise #.None)))))) (wrap (do &.Monad<Promise> [?none (&.time-out +100 (&.delay +200 true)) diff --git a/stdlib/test/test/lux/control/exception.lux b/stdlib/test/test/lux/control/exception.lux index 85b331620..9e11dbe0f 100644 --- a/stdlib/test/test/lux/control/exception.lux +++ b/stdlib/test/test/lux/control/exception.lux @@ -22,9 +22,9 @@ (context: "Exceptions" (<| (times +100) (do @ - [should-throw? r.bool - which? r.bool - should-catch? r.bool + [should-throw? r.bit + which? r.bit + should-catch? r.bit default-val r.nat some-val r.nat another-val r.nat diff --git a/stdlib/test/test/lux/control/parser.lux b/stdlib/test/test/lux/control/parser.lux index a8ec24446..6028eed1a 100644 --- a/stdlib/test/test/lux/control/parser.lux +++ b/stdlib/test/test/lux/control/parser.lux @@ -16,13 +16,13 @@ ## [Utils] (def: (should-fail input) - (All [a] (-> (Error a) Bool)) + (All [a] (-> (Error a) Bit)) (case input (#error.Error _) true _ false)) (def: (enforced? parser input) - (All [s] (-> (&.Parser s Any) s Bool)) + (All [s] (-> (&.Parser s Any) s Bit)) (case (&.run input parser) (#error.Success [_ []]) true @@ -31,7 +31,7 @@ false)) (def: (found? parser input) - (All [s] (-> (&.Parser s Bool) s Bool)) + (All [s] (-> (&.Parser s Bit) s Bit)) (case (&.run input parser) (#error.Success [_ true]) true @@ -40,7 +40,7 @@ false)) (def: (fails? input) - (All [a] (-> (Error a) Bool)) + (All [a] (-> (Error a) Bit)) (case input (#error.Error _) true @@ -60,9 +60,9 @@ (context: "Assertions" (test "Can make assertions while parsing." (and (match [] - (&.run (list (code.bool true) (code.int 123)) + (&.run (list (code.bit true) (code.int 123)) (&.assert "yolo" true))) - (fails? (&.run (list (code.bool true) (code.int 123)) + (fails? (&.run (list (code.bit true) (code.int 123)) (&.assert "yolo" false)))))) (context: "Combinators [Part 1]" @@ -105,14 +105,14 @@ (match -123 (&.run (list (code.int -123) (code.int 456) (code.int 789)) (&.either positive s.int))) - (fails? (&.run (list (code.bool true) (code.int 456) (code.int 789)) + (fails? (&.run (list (code.bit true) (code.int 456) (code.int 789)) (&.either positive s.int)))))) (test "Can create the opposite/negation of any parser." (and (fails? (&.run (list (code.int 123) (code.int 456) (code.int 789)) (&.not s.int))) (match [] - (&.run (list (code.bool true) (code.int 456) (code.int 789)) + (&.run (list (code.bit true) (code.int 456) (code.int 789)) (&.not s.int))))) )) diff --git a/stdlib/test/test/lux/control/region.lux b/stdlib/test/test/lux/control/region.lux index 606be66bf..544b42982 100644 --- a/stdlib/test/test/lux/control/region.lux +++ b/stdlib/test/test/lux/control/region.lux @@ -18,7 +18,7 @@ (do-template [<name> <success> <error>] [(def: (<name> result) - (All [a] (-> (Error a) Bool)) + (All [a] (-> (Error a) Bit)) (case result (#e.Success _) <success> (#e.Error _) <error>))] diff --git a/stdlib/test/test/lux/control/state.lux b/stdlib/test/test/lux/control/state.lux index 9f352df48..c39be3197 100644 --- a/stdlib/test/test/lux/control/state.lux +++ b/stdlib/test/test/lux/control/state.lux @@ -12,7 +12,7 @@ lux/test) (def: (with-conditions [state output] computation) - (-> [Nat Nat] (&.State Nat Nat) Bool) + (-> [Nat Nat] (&.State Nat Nat) Bit) (|> computation (&.run state) product.right diff --git a/stdlib/test/test/lux/data/bit.lux b/stdlib/test/test/lux/data/bit.lux new file mode 100644 index 000000000..f9ab9551f --- /dev/null +++ b/stdlib/test/test/lux/data/bit.lux @@ -0,0 +1,38 @@ +(.module: + [lux #* + [control + ["M" monad (#+ do Monad)]] + [io] + [data + bit] + [math + ["r" random]]] + lux/test) + +(context: "Bit operations." + (<| (times +100) + (do @ + [value r.bit] + (test "" (and (not (and value (not value))) + (or value (not value)) + + (not (:: Or@Monoid<Bit> identity)) + (:: Or@Monoid<Bit> compose value (not value)) + (:: And@Monoid<Bit> identity) + (not (:: And@Monoid<Bit> compose value (not value))) + + (:: Equivalence<Bit> = value (not (not value))) + (not (:: Equivalence<Bit> = value (not value))) + + (not (:: Equivalence<Bit> = value ((complement id) value))) + (:: Equivalence<Bit> = value ((complement not) value)) + + (case (|> value + (:: Codec<Text,Bit> encode) + (:: Codec<Text,Bit> decode)) + (#.Right dec-value) + (:: Equivalence<Bit> = value dec-value) + + (#.Left _) + false) + ))))) diff --git a/stdlib/test/test/lux/data/bool.lux b/stdlib/test/test/lux/data/bool.lux deleted file mode 100644 index 0413c2632..000000000 --- a/stdlib/test/test/lux/data/bool.lux +++ /dev/null @@ -1,38 +0,0 @@ -(.module: - [lux #* - [control - ["M" monad (#+ do Monad)]] - [io] - [data - bool] - [math - ["r" random]]] - lux/test) - -(context: "Boolean operations." - (<| (times +100) - (do @ - [value r.bool] - (test "" (and (not (and value (not value))) - (or value (not value)) - - (not (:: Or@Monoid<Bool> identity)) - (:: Or@Monoid<Bool> compose value (not value)) - (:: And@Monoid<Bool> identity) - (not (:: And@Monoid<Bool> compose value (not value))) - - (:: Equivalence<Bool> = value (not (not value))) - (not (:: Equivalence<Bool> = value (not value))) - - (not (:: Equivalence<Bool> = value ((complement id) value))) - (:: Equivalence<Bool> = value ((complement not) value)) - - (case (|> value - (:: Codec<Text,Bool> encode) - (:: Codec<Text,Bool> decode)) - (#.Right dec-value) - (:: Equivalence<Bool> = value dec-value) - - (#.Left _) - false) - ))))) diff --git a/stdlib/test/test/lux/data/collection/list.lux b/stdlib/test/test/lux/data/collection/list.lux index f7e73ef9b..0945a9abb 100644 --- a/stdlib/test/test/lux/data/collection/list.lux +++ b/stdlib/test/test/lux/data/collection/list.lux @@ -5,7 +5,7 @@ [monad (#+ do Monad)] pipe] [data [number] - [bool] + [bit] [product] [maybe] [collection @@ -48,7 +48,7 @@ (test "Filtering by a predicate and its complement should result in a number of elements equal to the original list." (and (n/= (&.size sample) (n/+ (&.size (&.filter n/even? sample)) - (&.size (&.filter (bool.complement n/even?) sample)))) + (&.size (&.filter (bit.complement n/even?) sample)))) (let [[plus minus] (&.partition n/even? sample)] (n/= (&.size sample) (n/+ (&.size plus) @@ -56,9 +56,9 @@ (test "If every element in a list satisfies a predicate, there can't be any that satisfy its complement." (if (&.every? n/even? sample) - (and (not (&.any? (bool.complement n/even?) sample)) - (&.empty? (&.filter (bool.complement n/even?) sample))) - (&.any? (bool.complement n/even?) sample))) + (and (not (&.any? (bit.complement n/even?) sample)) + (&.empty? (&.filter (bit.complement n/even?) sample))) + (&.any? (bit.complement n/even?) sample))) (test "Any element of the list can be considered its member." (let [elem (maybe.assume (&.nth idx sample))] @@ -196,11 +196,11 @@ (#.Some found) (and (n/even? found) (&.any? n/even? sample) - (not (&.every? (bool.complement n/even?) sample))) + (not (&.every? (bit.complement n/even?) sample))) #.None (and (not (&.any? n/even? sample)) - (&.every? (bool.complement n/even?) sample)))) + (&.every? (bit.complement n/even?) sample)))) (test "You can iteratively construct a list, generating values until you're done." (= (&.n/range +0 (dec size)) diff --git a/stdlib/test/test/lux/data/format/json.lux b/stdlib/test/test/lux/data/format/json.lux index e3b3c6f66..f648dce28 100644 --- a/stdlib/test/test/lux/data/format/json.lux +++ b/stdlib/test/test/lux/data/format/json.lux @@ -9,7 +9,7 @@ ["p" parser]] [data ["e" error] - [bool] + [bit] [maybe] [number] ["." text @@ -50,7 +50,7 @@ [size (:: @ map (n/% +2) r.nat)] ($_ r.alt (:: @ wrap []) - r.bool + r.bit (|> r.frac (:: @ map (f/* 1_000_000.0))) (r.unicode size) (r.row size gen-json) @@ -77,7 +77,7 @@ )))) (type: Variant - (#Case0 Bool) + (#Case0 Bit) (#Case1 Text) (#Case2 Frac)) @@ -86,14 +86,14 @@ (#Addition Frac Recursive)) (type: Record - {#bool Bool + {#bit Bit #frac Frac #text Text #maybe (Maybe Frac) #list (List Frac) #dict (d.Dictionary Text Frac) ## #variant Variant - ## #tuple [Bool Frac Text] + ## #tuple [Bit Frac Text] #recursive Recursive ## #instant ti.Instant #duration tdu.Duration @@ -118,14 +118,14 @@ (do r.Monad<Random> [size (:: @ map (n/% +2) r.nat)] ($_ r.seq - r.bool + r.bit r.frac (r.unicode size) (r.maybe r.frac) (r.list size r.frac) (r.dictionary text.Hash<Text> size (r.unicode size) r.frac) - ## ($_ r.alt r.bool (r.unicode size) r.frac) - ## ($_ r.seq r.bool r.frac (r.unicode size)) + ## ($_ r.alt r.bit (r.unicode size) r.frac) + ## ($_ r.seq r.bit r.frac (r.unicode size)) gen-recursive ## _instant.instant _duration.duration @@ -140,7 +140,7 @@ (let [variant/= (function (_ left right) (case [left right] [(#Case0 left') (#Case0 right')] - (:: bool.Equivalence<Bool> = left' right') + (:: bit.Equivalence<Bit> = left' right') [(#Case1 left') (#Case1 right')] (:: text.Equivalence<Text> = left' right') @@ -150,7 +150,7 @@ _ false))] - (and (:: bool.Equivalence<Bool> = (get@ #bool recL) (get@ #bool recR)) + (and (:: bit.Equivalence<Bit> = (get@ #bit recL) (get@ #bit recR)) (f/= (get@ #frac recL) (get@ #frac recR)) (:: text.Equivalence<Text> = (get@ #text recL) (get@ #text recR)) (:: (maybe.Equivalence<Maybe> number.Equivalence<Frac>) = (get@ #maybe recL) (get@ #maybe recR)) @@ -159,7 +159,7 @@ ## (variant/= (get@ #variant recL) (get@ #variant recR)) ## (let [[tL0 tL1 tL2] (get@ #tuple recL) ## [tR0 tR1 tR2] (get@ #tuple recR)] - ## (and (:: bool.Equivalence<Bool> = tL0 tR0) + ## (and (:: bit.Equivalence<Bit> = tL0 tR0) ## (f/= tL1 tR1) ## (:: text.Equivalence<Text> = tL2 tR2))) (:: Equivalence<Recursive> = (get@ #recursive recL) (get@ #recursive recR)) diff --git a/stdlib/test/test/lux/data/number/complex.lux b/stdlib/test/test/lux/data/number/complex.lux index 03ec307ff..15d759ba7 100644 --- a/stdlib/test/test/lux/data/number/complex.lux +++ b/stdlib/test/test/lux/data/number/complex.lux @@ -19,7 +19,7 @@ (def: margin-of-error Frac 1.0e-9) (def: (within? margin standard value) - (-> Frac &.Complex &.Complex Bool) + (-> Frac &.Complex &.Complex Bit) (let [real-dist (frac/abs (f/- (get@ #&.real standard) (get@ #&.real value))) imgn-dist (frac/abs (f/- (get@ #&.imaginary standard) @@ -161,7 +161,7 @@ )))) (def: (trigonometric-symmetry forward backward angle) - (-> (-> &.Complex &.Complex) (-> &.Complex &.Complex) &.Complex Bool) + (-> (-> &.Complex &.Complex) (-> &.Complex &.Complex) &.Complex Bit) (let [normal (|> angle forward backward)] (|> normal forward backward (within? margin-of-error normal)))) diff --git a/stdlib/test/test/lux/data/number/i64.lux b/stdlib/test/test/lux/data/number/i64.lux index 1dd9dd314..52b80ea25 100644 --- a/stdlib/test/test/lux/data/number/i64.lux +++ b/stdlib/test/test/lux/data/number/i64.lux @@ -39,7 +39,7 @@ (n/= &.width (n/+ (&.count pattern) (&.count (&.not pattern))))) - (test "Can do simple binary boolean logic." + (test "Can do simple binary logic." (and (n/= +0 (&.and pattern (&.not pattern))) diff --git a/stdlib/test/test/lux/data/text/lexer.lux b/stdlib/test/test/lux/data/text/lexer.lux index 25abe3ae4..b02082357 100644 --- a/stdlib/test/test/lux/data/text/lexer.lux +++ b/stdlib/test/test/lux/data/text/lexer.lux @@ -18,13 +18,13 @@ ## [Utils] (def: (should-fail input) - (All [a] (-> (E.Error a) Bool)) + (All [a] (-> (E.Error a) Bit)) (case input (#.Left _) true _ false)) (def: (should-passT test input) - (-> Text (E.Error Text) Bool) + (-> Text (E.Error Text) Bit) (case input (#.Right output) (text/= test output) @@ -33,7 +33,7 @@ false)) (def: (should-passL test input) - (-> (List Text) (E.Error (List Text)) Bool) + (-> (List Text) (E.Error (List Text)) Bit) (let [(^open "list/") (list.Equivalence<List> text.Equivalence<Text>)] (case input (#.Right output) @@ -43,7 +43,7 @@ false))) (def: (should-passE test input) - (-> (Either Text Text) (E.Error (Either Text Text)) Bool) + (-> (Either Text Text) (E.Error (Either Text Text)) Bit) (case input (#.Right output) (case [test output] diff --git a/stdlib/test/test/lux/data/text/regex.lux b/stdlib/test/test/lux/data/text/regex.lux index 16970af9c..ff09a55db 100644 --- a/stdlib/test/test/lux/data/text/regex.lux +++ b/stdlib/test/test/lux/data/text/regex.lux @@ -20,7 +20,7 @@ ## [Utils] (def: (should-pass regex input) - (-> (lexer.Lexer Text) Text Bool) + (-> (lexer.Lexer Text) Text Bit) (|> (lexer.run input regex) (case> (#.Right parsed) (text/= parsed input) @@ -29,7 +29,7 @@ false))) (def: (should-passT test regex input) - (-> Text (lexer.Lexer Text) Text Bool) + (-> Text (lexer.Lexer Text) Text Bit) (|> (lexer.run input regex) (case> (#.Right parsed) (text/= test parsed) @@ -38,7 +38,7 @@ false))) (def: (should-fail regex input) - (All [a] (-> (lexer.Lexer a) Text Bool)) + (All [a] (-> (lexer.Lexer a) Text Bit)) (|> (lexer.run input regex) (case> (#.Left _) true _ false))) diff --git a/stdlib/test/test/lux/language/compiler/analysis/case.lux b/stdlib/test/test/lux/language/compiler/analysis/case.lux index 4e01ae3bd..14b762271 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/case.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/case.lux @@ -44,9 +44,9 @@ (wrap (#.Cons head tail+))))) (def: #export (exhaustive-branches allow-literals? variantTC inputC) - (-> Bool (List [Code Code]) Code (r.Random (List Code))) + (-> Bit (List [Code Code]) Code (r.Random (List Code))) (case inputC - [_ (#.Bool _)] + [_ (#.Bit _)] (random/wrap (list (' true) (' false))) (^template [<tag> <gen> <wrapper>] diff --git a/stdlib/test/test/lux/language/compiler/analysis/function.lux b/stdlib/test/test/lux/language/compiler/analysis/function.lux index 1edbfd949..32ef59e3f 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/function.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/function.lux @@ -35,7 +35,7 @@ (def: analyse (expression.analyser (:coerce language.Eval []))) (def: (check-apply expectedT num-args analysis) - (-> Type Nat (Operation Analysis) Bool) + (-> Type Nat (Operation Analysis) Bit) (|> analysis (typeA.with-type expectedT) (compiler.run [analysisE.bundle (init.compiler [])]) diff --git a/stdlib/test/test/lux/language/compiler/analysis/primitive.lux b/stdlib/test/test/lux/language/compiler/analysis/primitive.lux index 8cd764b00..fadde9bb0 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/primitive.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/primitive.lux @@ -36,7 +36,7 @@ [(r.seq (random/wrap <type>) (random/map <code-wrapper> <value-gen>))] [Any code.tuple (r.list +0 ..unit)] - [Bool code.bool r.bool] + [Bit code.bit r.bit] [Nat code.nat r.nat] [Int code.int r.int] [Rev code.rev r.rev] @@ -83,7 +83,7 @@ _ false))))] - ["bool" Bool #analysis.Bool r.bool code.bool] + ["bit" Bit #analysis.Bit r.bit code.bit] ["nat" Nat #analysis.Nat r.nat code.nat] ["int" Int #analysis.Int r.int code.int] ["rev" Rev #analysis.Rev r.rev code.rev] diff --git a/stdlib/test/test/lux/language/compiler/analysis/procedure/common.lux b/stdlib/test/test/lux/language/compiler/analysis/procedure/common.lux index e3b8cc9b5..7ea4a23bd 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/procedure/common.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/procedure/common.lux @@ -30,7 +30,7 @@ (do-template [<name> <success> <failure>] [(def: (<name> procedure params output-type) - (-> Text (List Code) Type Bool) + (-> Text (List Code) Type Bit) (|> (scope.with-scope "" (typeA.with-type output-type (_primitive.analyse (` ((~ (code.text procedure)) (~+ params)))))) @@ -53,9 +53,9 @@ (r.filter (|>> product.left (type/= primT) not)))] ($_ seq (test "Can test for reference equality." - (check-success+ "lux is" (list primC primC) Bool)) + (check-success+ "lux is" (list primC primC) Bit)) (test "Reference equality must be done with elements of the same type." - (check-failure+ "lux is" (list primC antiC) Bool)) + (check-failure+ "lux is" (list primC antiC) Bit)) (test "Can 'try' risky IO computations." (check-success+ "lux try" (list (` ([(~' _) (~' _)] (~ primC)))) @@ -100,9 +100,9 @@ (test "Can calculate remainder of integers." (check-success+ "lux int %" (list subjectC paramC) Int)) (test "Can test equivalence of integers." - (check-success+ "lux int =" (list subjectC paramC) Bool)) + (check-success+ "lux int =" (list subjectC paramC) Bit)) (test "Can compare integers." - (check-success+ "lux int <" (list subjectC paramC) Bool)) + (check-success+ "lux int <" (list subjectC paramC) Bit)) (test "Can convert integer to fraction." (check-success+ "lux int to-frac" (list subjectC) Frac)) (test "Can convert integer to text." @@ -127,9 +127,9 @@ (test "Can calculate remainder of frac numbers." (check-success+ "lux frac %" (list subjectC paramC) Frac)) (test "Can test equivalence of frac numbers." - (check-success+ "lux frac =" (list subjectC paramC) Bool)) + (check-success+ "lux frac =" (list subjectC paramC) Bit)) (test "Can compare frac numbers." - (check-success+ "lux frac <" (list subjectC paramC) Bool)) + (check-success+ "lux frac <" (list subjectC paramC) Bit)) (test "Can obtain minimum frac number." (check-success+ "lux frac min" (list) Frac)) (test "Can obtain maximum frac number." @@ -154,9 +154,9 @@ toC (|> r.nat (:: @ map code.nat))] ($_ seq (test "Can test text equivalence." - (check-success+ "lux text =" (list subjectC paramC) Bool)) + (check-success+ "lux text =" (list subjectC paramC) Bit)) (test "Compare texts in lexicographical order." - (check-success+ "lux text <" (list subjectC paramC) Bool)) + (check-success+ "lux text <" (list subjectC paramC) Bit)) (test "Can concatenate one text to another." (check-success+ "lux text concat" (list subjectC paramC) Text)) (test "Can find the index of a piece of text inside a larger one that (may) contain it." @@ -262,7 +262,7 @@ (test "Can swap the value of an atomic reference." (|> (scope.with-scope "" (scope.with-local [var-name atomT] - (typeA.with-type Bool + (typeA.with-type Bit (_primitive.analyse (` ("lux atom compare-and-swap" (~ (code.symbol ["" var-name])) (~ elemC) diff --git a/stdlib/test/test/lux/language/compiler/analysis/reference.lux b/stdlib/test/test/lux/language/compiler/analysis/reference.lux index 00ab606a3..d68e2e8f4 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/reference.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/reference.lux @@ -31,7 +31,7 @@ (def: analyse (expression.analyser (:coerce language.Eval []))) -(type: Check (-> (e.Error Any) Bool)) +(type: Check (-> (e.Error Any) Bit)) (do-template [<name> <on-success> <on-failure>] [(def: <name> @@ -47,7 +47,7 @@ ) (def: (reach-test var-name [export? def-module] [import? dependent-module] check!) - (-> Text [Bool Text] [Bool Text] Check Bool) + (-> Text [Bit Text] [Bit Text] Check Bit) (|> (do compiler.Monad<Operation> [_ (module.with-module +0 def-module (module.define var-name [Any diff --git a/stdlib/test/test/lux/language/compiler/analysis/structure.lux b/stdlib/test/test/lux/language/compiler/analysis/structure.lux index 664e6e29f..8d8ce4cd0 100644 --- a/stdlib/test/test/lux/language/compiler/analysis/structure.lux +++ b/stdlib/test/test/lux/language/compiler/analysis/structure.lux @@ -4,7 +4,7 @@ [monad (#+ do)] pipe] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] ["e" error] [product] [maybe] @@ -36,7 +36,7 @@ (do-template [<name> <on-success> <on-error>] [(def: #export <name> - (All [a] (-> (Operation a) Bool)) + (All [a] (-> (Operation a) Bit)) (|>> (compiler.run [analysisE.bundle (init.compiler [])]) (case> (#e.Success _) <on-success> @@ -49,16 +49,16 @@ ) (def: (check-sum' size tag variant) - (-> Nat Tag (Variant Analysis) Bool) + (-> Nat Tag (Variant Analysis) Bit) (let [variant-tag (if (get@ #analysis.right? variant) (inc (get@ #analysis.lefts variant)) (get@ #analysis.lefts variant))] (|> size dec (n/= tag) - (bool/= (get@ #analysis.right? variant)) + (bit/= (get@ #analysis.right? variant)) (and (n/= tag variant-tag))))) (def: (check-sum type size tag analysis) - (-> Type Nat Tag (Operation Analysis) Bool) + (-> Type Nat Tag (Operation Analysis) Bit) (|> analysis (typeA.with-type type) (compiler.run [analysisE.bundle (init.compiler [])]) @@ -77,7 +77,7 @@ (module.with-module +0 module))) (def: (check-variant module tags type size tag analysis) - (-> Text (List module.Tag) Type Nat Tag (Operation Analysis) Bool) + (-> Text (List module.Tag) Type Nat Tag (Operation Analysis) Bit) (|> analysis (tagged module tags type) (typeA.with-type type) @@ -91,11 +91,11 @@ false))) (def: (right-size? size) - (-> Nat (-> Analysis Bool)) + (-> Nat (-> Analysis Bit)) (|>> analysis.tuple list.size (n/= size))) (def: (check-record-inference module tags type size analysis) - (-> Text (List module.Tag) Type Nat (Operation [Type Analysis]) Bool) + (-> Text (List module.Tag) Type Nat (Operation [Type Analysis]) Bit) (|> analysis (tagged module tags type) (compiler.run [analysisE.bundle (init.compiler [])]) diff --git a/stdlib/test/test/lux/language/compiler/synthesis/case.lux b/stdlib/test/test/lux/language/compiler/synthesis/case.lux index 264bc0967..ff84207a1 100644 --- a/stdlib/test/test/lux/language/compiler/synthesis/case.lux +++ b/stdlib/test/test/lux/language/compiler/synthesis/case.lux @@ -60,15 +60,15 @@ (context: "If expressions." (<| (times +100) (do @ - [then|else r.bool + [then|else r.bit inputA //primitive.primitive thenA //primitive.primitive elseA //primitive.primitive #let [thenB (: Branch - [(#analysisL.Simple (#analysisL.Bool true)) + [(#analysisL.Simple (#analysisL.Bit true)) thenA]) elseB (: Branch - [(#analysisL.Simple (#analysisL.Bool false)) + [(#analysisL.Simple (#analysisL.Bit false)) elseA]) ifA (if then|else (analysisL.control/case [inputA [thenB (list elseB)]]) diff --git a/stdlib/test/test/lux/language/compiler/synthesis/function.lux b/stdlib/test/test/lux/language/compiler/synthesis/function.lux index 51b2a2e17..0116033bd 100644 --- a/stdlib/test/test/lux/language/compiler/synthesis/function.lux +++ b/stdlib/test/test/lux/language/compiler/synthesis/function.lux @@ -30,7 +30,7 @@ (r.rec (function (_ constant-function) (do r.Monad<Random> - [function? r.bool] + [function? r.bit] (if function? (do @ [[arity bodyA predictionA] constant-function] @@ -62,7 +62,7 @@ (dict.new number.Hash<Nat>)) (list.enumerate current-env))] (do @ - [nest? r.bool] + [nest? r.bit] (if nest? (do @ [num-picks (:: @ map (n/max +1) (pick (inc current-env/size))) @@ -91,7 +91,7 @@ nest? true] (if nest? (do r.Monad<Random> - [nest?' r.bool + [nest?' r.bit [arity' bodyA predictionA] (recur (inc arity) nest?')] (wrap [arity' (#analysisL.Function (list) bodyA) diff --git a/stdlib/test/test/lux/language/compiler/synthesis/primitive.lux b/stdlib/test/test/lux/language/compiler/synthesis/primitive.lux index 3bea7682d..c804b94ff 100644 --- a/stdlib/test/test/lux/language/compiler/synthesis/primitive.lux +++ b/stdlib/test/test/lux/language/compiler/synthesis/primitive.lux @@ -24,7 +24,7 @@ [primitive (: (r.Random analysisL.Primitive) ($_ r.alt (wrap []) - r.bool + r.bit r.nat r.int r.rev @@ -33,14 +33,14 @@ (wrap (#analysisL.Primitive primitive)))) (def: #export (corresponds? analysis synthesis) - (-> Analysis Synthesis Bool) + (-> Analysis Synthesis Bit) (case [synthesis analysis] [(#//.Primitive (#//.Text valueS)) (#analysisL.Primitive (#analysisL.Unit valueA))] (is? valueS (:coerce Text valueA)) - [(#//.Primitive (#//.Bool valueS)) - (#analysisL.Primitive (#analysisL.Bool valueA))] + [(#//.Primitive (#//.Bit valueS)) + (#analysisL.Primitive (#analysisL.Bit valueA))] (is? valueS valueA) [(#//.Primitive (#//.I64 valueS)) @@ -69,7 +69,7 @@ (context: "Primitives." (<| (times +100) (do @ - [%bool% r.bool + [%bit% r.bit %nat% r.nat %int% r.int %rev% r.rev @@ -88,7 +88,7 @@ false)))] ["unit" #analysisL.Unit #//.Text //.unit] - ["bool" #analysisL.Bool #//.Bool %bool%] + ["bit" #analysisL.Bit #//.Bit %bit%] ["nat" #analysisL.Nat #//.I64 (.i64 %nat%)] ["int" #analysisL.Int #//.I64 (.i64 %int%)] ["rev" #analysisL.Rev #//.I64 (.i64 %rev%)] diff --git a/stdlib/test/test/lux/language/compiler/synthesis/structure.lux b/stdlib/test/test/lux/language/compiler/synthesis/structure.lux index 0b9f705ff..db56757d1 100644 --- a/stdlib/test/test/lux/language/compiler/synthesis/structure.lux +++ b/stdlib/test/test/lux/language/compiler/synthesis/structure.lux @@ -5,7 +5,7 @@ [monad (#+ do)] pipe] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [product] [error] [collection @@ -35,7 +35,7 @@ (case> (#error.Success (#//.Structure (#//.Variant [leftsS right?S valueS]))) (let [tagS (if right?S (inc leftsS) leftsS)] (and (n/= tagA tagS) - (|> tagS (n/= (dec size)) (bool/= right?S)) + (|> tagS (n/= (dec size)) (bit/= right?S)) (//primitive.corresponds? memberA valueS))) _ diff --git a/stdlib/test/test/lux/language/syntax.lux b/stdlib/test/test/lux/language/syntax.lux index 22420e3eb..8c93867aa 100644 --- a/stdlib/test/test/lux/language/syntax.lux +++ b/stdlib/test/test/lux/language/syntax.lux @@ -47,7 +47,7 @@ (r.Random Code) (let [numeric^ (: (r.Random Code) ($_ r.either - (|> r.bool (r/map code.bool)) + (|> r.bit (r/map code.bit)) (|> r.nat (r/map code.nat)) (|> r.int (r/map code.int)) (|> r.rev (r/map code.rev)) @@ -116,7 +116,7 @@ (do @ [numerator (|> r.nat (:: @ map (|>> (n/% +100) .int int-to-frac))) denominator (|> r.nat (:: @ map (|>> (n/% +100) (n/max +1) .int int-to-frac))) - signed? r.bool + signed? r.bit #let [expected (|> numerator (f// denominator) (f/* (if signed? -1.0 1.0)))]] (test "Can parse frac ratio syntax." (case (&.read "" (dict.new text.Hash<Text>) diff --git a/stdlib/test/test/lux/language/type.lux b/stdlib/test/test/lux/language/type.lux index 7be06000b..5f2cff09b 100644 --- a/stdlib/test/test/lux/language/type.lux +++ b/stdlib/test/test/lux/language/type.lux @@ -57,14 +57,14 @@ (test "Can apply quantified types (universal and existential quantification)." (and (maybe.default false (do maybe.Monad<Maybe> - [partial (&.apply (list Bool) Ann) + [partial (&.apply (list Bit) Ann) full (&.apply (list Int) partial)] - (wrap (:: &.Equivalence<Type> = full (#.Product Bool Int))))) - (|> (&.apply (list Bool) Text) + (wrap (:: &.Equivalence<Type> = full (#.Product Bit Int))))) + (|> (&.apply (list Bit) Text) (case> #.None true _ false))))) (context: "Naming" - (let [base (#.Named ["" "a"] (#.Product Bool Int)) + (let [base (#.Named ["" "a"] (#.Product Bit Int)) aliased (#.Named ["" "c"] (#.Named ["" "b"] base))] diff --git a/stdlib/test/test/lux/language/type/check.lux b/stdlib/test/test/lux/language/type/check.lux index 8fe7f2bf6..c2db4533c 100644 --- a/stdlib/test/test/lux/language/type/check.lux +++ b/stdlib/test/test/lux/language/type/check.lux @@ -50,7 +50,7 @@ ))))) (def: (valid-type? type) - (-> Type Bool) + (-> Type Bit) (case type (#.Primitive name params) (list.every? valid-type? params) @@ -70,7 +70,7 @@ false)) (def: (type-checks? input) - (-> (@.Check []) Bool) + (-> (@.Check []) Bit) (case (@.run @.fresh-context input) (#.Right []) true @@ -177,20 +177,20 @@ (test "Cannot rebind already bound type-vars." (not (type-checks? (do @.Monad<Check> [[id var] @.var - _ (@.check var .Bool)] + _ (@.check var .Bit)] (@.check var .Nat))))) (test "If the type bound to a var is a super-type to another, then the var is also a super-type." (type-checks? (do @.Monad<Check> [[id var] @.var _ (@.check var Any)] - (@.check var .Bool)))) + (@.check var .Bit)))) (test "If the type bound to a var is a sub-type of another, then the var is also a sub-type." (type-checks? (do @.Monad<Check> [[id var] @.var _ (@.check var Nothing)] - (@.check .Bool var)))) + (@.check .Bit var)))) )) (def: (build-ring num-connections) diff --git a/stdlib/test/test/lux/macro/code.lux b/stdlib/test/test/lux/macro/code.lux index 6c5a28265..0dfcd8fa0 100644 --- a/stdlib/test/test/lux/macro/code.lux +++ b/stdlib/test/test/lux/macro/code.lux @@ -18,17 +18,17 @@ (and (text/= <text> (&.to-text <expr>)) (:: &.Equivalence<Code> = <expr> <expr>)))] - [(&.bool true) "true"] - [(&.bool false) "false"] - [(&.int 123) "123"] - [(&.frac 123.0) "123.0"] - [(&.text "\n") "\"\\n\""] - [(&.tag ["yolo" "lol"]) "#yolo.lol"] - [(&.symbol ["yolo" "lol"]) "yolo.lol"] - [(&.form (list (&.bool true) (&.int 123))) "(true 123)"] - [(&.tuple (list (&.bool true) (&.int 123))) "[true 123]"] - [(&.record (list [(&.bool true) (&.int 123)])) "{true 123}"] - [(&.local-tag "lol") "#lol"] - [(&.local-symbol "lol") "lol"] + [(&.bit true) "true"] + [(&.bit false) "false"] + [(&.int 123) "123"] + [(&.frac 123.0) "123.0"] + [(&.text "\n") "\"\\n\""] + [(&.tag ["yolo" "lol"]) "#yolo.lol"] + [(&.symbol ["yolo" "lol"]) "yolo.lol"] + [(&.form (list (&.bit true) (&.int 123))) "(true 123)"] + [(&.tuple (list (&.bit true) (&.int 123))) "[true 123]"] + [(&.record (list [(&.bit true) (&.int 123)])) "{true 123}"] + [(&.local-tag "lol") "#lol"] + [(&.local-symbol "lol") "lol"] )] ($_ seq <tests>))) diff --git a/stdlib/test/test/lux/macro/poly/equivalence.lux b/stdlib/test/test/lux/macro/poly/equivalence.lux index 3ae57cd40..d6b48428a 100644 --- a/stdlib/test/test/lux/macro/poly/equivalence.lux +++ b/stdlib/test/test/lux/macro/poly/equivalence.lux @@ -5,7 +5,7 @@ [monad (#+ do Monad)] [equivalence (#+ Equivalence)]] [data - [bool] + [bit] [maybe] [number ("int/" Number<Int>)] ["." text @@ -20,7 +20,7 @@ ## [Utils] (type: Variant - (#Case0 Bool) + (#Case0 Bit) (#Case1 Int) (#Case2 Frac)) @@ -29,7 +29,7 @@ (#Addition Frac Recursive)) (type: Record - {#bool Bool + {#bit Bit #int Int #frac Frac #text Text @@ -51,13 +51,13 @@ [size (:: @ map (n/% +2) r.nat) #let [gen-int (|> r.int (:: @ map (|>> int/abs (i/% 1_000_000))))]] ($_ r.seq - r.bool + r.bit gen-int r.frac (r.unicode size) (r.maybe gen-int) (r.list size gen-int) - ($_ r.alt r.bool gen-int r.frac) + ($_ r.alt r.bit gen-int r.frac) ($_ r.seq gen-int r.frac (r.unicode size)) gen-recursive))) diff --git a/stdlib/test/test/lux/macro/syntax.lux b/stdlib/test/test/lux/macro/syntax.lux index 8d2b5ff8c..35e25734f 100644 --- a/stdlib/test/test/lux/macro/syntax.lux +++ b/stdlib/test/test/lux/macro/syntax.lux @@ -6,7 +6,7 @@ [equivalence (#+ Equivalence)] ["p" parser]] [data - [bool] + [bit] [ident] ["e" error] [number] @@ -21,7 +21,7 @@ ## [Utils] (def: (enforced? parser input) - (-> (Syntax []) (List Code) Bool) + (-> (Syntax []) (List Code) Bit) (case (p.run input parser) (#.Right [_ []]) true @@ -30,7 +30,7 @@ false)) (def: (found? parser input) - (-> (Syntax Bool) (List Code) Bool) + (-> (Syntax Bit) (List Code) Bit) (case (p.run input parser) (#.Right [_ true]) true @@ -39,7 +39,7 @@ false)) (def: (equals? Equivalence<a> reference parser input) - (All [a] (-> (Equivalence a) a (Syntax a) (List Code) Bool)) + (All [a] (-> (Equivalence a) a (Syntax a) (List Code) Bit)) (case (p.run input parser) (#.Right [_ output]) (:: Equivalence<a> = reference output) @@ -48,7 +48,7 @@ false)) (def: (fails? input) - (All [a] (-> (e.Error a) Bool)) + (All [a] (-> (e.Error a) Bit)) (case input (#.Left _) true @@ -73,7 +73,7 @@ (found? (s.this? (<ctor> <value>)) (list (<ctor> <value>))) (enforced? (s.this (<ctor> <value>)) (list (<ctor> <value>)))))] - ["Can parse Bool syntax." true code.bool bool.Equivalence<Bool> s.bool] + ["Can parse Bit syntax." true code.bit bit.Equivalence<Bit> s.bit] ["Can parse Nat syntax." +123 code.nat number.Equivalence<Nat> s.nat] ["Can parse Int syntax." 123 code.int number.Equivalence<Int> s.int] ["Can parse Rev syntax." .123 code.rev number.Equivalence<Rev> s.rev] @@ -105,21 +105,21 @@ [<group-tests> (do-template [<type> <parser> <ctor>] [(test (format "Can parse " <type> " syntax.") (and (match [true 123] - (p.run (list (<ctor> (list (code.bool true) (code.int 123)))) - (<parser> (p.seq s.bool s.int)))) + (p.run (list (<ctor> (list (code.bit true) (code.int 123)))) + (<parser> (p.seq s.bit s.int)))) (match true - (p.run (list (<ctor> (list (code.bool true)))) - (<parser> s.bool))) - (fails? (p.run (list (<ctor> (list (code.bool true) (code.int 123)))) - (<parser> s.bool))) + (p.run (list (<ctor> (list (code.bit true)))) + (<parser> s.bit))) + (fails? (p.run (list (<ctor> (list (code.bit true) (code.int 123)))) + (<parser> s.bit))) (match (#.Left true) - (p.run (list (<ctor> (list (code.bool true)))) - (<parser> (p.alt s.bool s.int)))) + (p.run (list (<ctor> (list (code.bit true)))) + (<parser> (p.alt s.bit s.int)))) (match (#.Right 123) (p.run (list (<ctor> (list (code.int 123)))) - (<parser> (p.alt s.bool s.int)))) + (<parser> (p.alt s.bit s.int)))) (fails? (p.run (list (<ctor> (list (code.frac 123.0)))) - (<parser> (p.alt s.bool s.int))))))] + (<parser> (p.alt s.bit s.int))))))] ["form" s.form code.form] ["tuple" s.tuple code.tuple])] @@ -128,15 +128,15 @@ (test "Can parse record syntax." (match [true 123] - (p.run (list (code.record (list [(code.bool true) (code.int 123)]))) - (s.record (p.seq s.bool s.int))))) + (p.run (list (code.record (list [(code.bit true) (code.int 123)]))) + (s.record (p.seq s.bit s.int))))) ))) (context: "Combinators" ($_ seq (test "Can parse any Code." - (match [_ (#.Bool true)] - (p.run (list (code.bool true) (code.int 123)) + (match [_ (#.Bit true)] + (p.run (list (code.bit true) (code.int 123)) s.any))) (test "Can check whether the end has been reached." @@ -144,13 +144,13 @@ (p.run (list) s.end?)) (match false - (p.run (list (code.bool true)) + (p.run (list (code.bit true)) s.end?)))) (test "Can ensure the end has been reached." (and (match [] (p.run (list) s.end!)) - (fails? (p.run (list (code.bool true)) + (fails? (p.run (list (code.bit true)) s.end!)))) )) diff --git a/stdlib/test/test/lux/math.lux b/stdlib/test/test/lux/math.lux index ab12c4894..920b0c951 100644 --- a/stdlib/test/test/lux/math.lux +++ b/stdlib/test/test/lux/math.lux @@ -4,21 +4,21 @@ [control [monad (#+ do Monad)]] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [number ("frac/" Number<Frac>)]] ["&" math ["r" random]]] lux/test) (def: (within? margin-of-error standard value) - (-> Frac Frac Frac Bool) + (-> Frac Frac Frac Bit) (f/< margin-of-error (frac/abs (f/- standard value)))) (def: margin Frac 0.0000001) (def: (trigonometric-symmetry forward backward angle) - (-> (-> Frac Frac) (-> Frac Frac) Frac Bool) + (-> (-> Frac Frac) (-> Frac Frac) Frac Bit) (let [normal (|> angle forward backward)] (|> normal forward backward (within? margin normal)))) @@ -114,12 +114,12 @@ (&.infix [(n/* +3 +9) &.n/gcd +450]))) (test "Can use non-numerical functions/macros as operators." - (bool/= (and (n/< y x) (n/< z y)) - (&.infix [[x n/< y] and [y n/< z]]))) - - (test "Can combine boolean operations in special ways via special keywords." - (and (bool/= (and (n/< y x) (n/< z y)) - (&.infix [#and x n/< y n/< z])) - (bool/= (and (n/< y x) (n/> z y)) - (&.infix [#and x n/< y n/> z])))) + (bit/= (and (n/< y x) (n/< z y)) + (&.infix [[x n/< y] and [y n/< z]]))) + + (test "Can combine bit operations in special ways via special keywords." + (and (bit/= (and (n/< y x) (n/< z y)) + (&.infix [#and x n/< y n/< z])) + (bit/= (and (n/< y x) (n/> z y)) + (&.infix [#and x n/< y n/> z])))) )))) diff --git a/stdlib/test/test/lux/math/logic/fuzzy.lux b/stdlib/test/test/lux/math/logic/fuzzy.lux index 53e183b35..104c0cf76 100644 --- a/stdlib/test/test/lux/math/logic/fuzzy.lux +++ b/stdlib/test/test/lux/math/logic/fuzzy.lux @@ -4,7 +4,7 @@ [control [monad (#+ do Monad)]] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [number] [text format] @@ -46,14 +46,14 @@ (r/= ~false (&.membership top triangle)))) (test "Values within range, will have membership > 0." - (bool/= (r/> ~false (&.membership sample triangle)) - (and (<gt> bottom sample) - (<lt> top sample)))) + (bit/= (r/> ~false (&.membership sample triangle)) + (and (<gt> bottom sample) + (<lt> top sample)))) (test "Values outside of range, will have membership = 0." - (bool/= (r/= ~false (&.membership sample triangle)) - (or (<lte> bottom sample) - (<gte> top sample)))) + (bit/= (r/= ~false (&.membership sample triangle)) + (or (<lte> bottom sample) + (<gte> top sample)))) ))))] ["Rev" number.Hash<Rev> r.rev &.triangle r/< r/<= r/> r/>=] @@ -88,19 +88,19 @@ (r/= ~false (&.membership top trapezoid)))) (test "Values within inner range will have membership = 1" - (bool/= (r/= ~true (&.membership sample trapezoid)) - (and (<gte> middle-bottom sample) - (<lte> middle-top sample)))) + (bit/= (r/= ~true (&.membership sample trapezoid)) + (and (<gte> middle-bottom sample) + (<lte> middle-top sample)))) (test "Values within range, will have membership > 0." - (bool/= (r/> ~false (&.membership sample trapezoid)) - (and (<gt> bottom sample) - (<lt> top sample)))) + (bit/= (r/> ~false (&.membership sample trapezoid)) + (and (<gt> bottom sample) + (<lt> top sample)))) (test "Values outside of range, will have membership = 0." - (bool/= (r/= ~false (&.membership sample trapezoid)) - (or (<lte> bottom sample) - (<gte> top sample)))) + (bit/= (r/= ~false (&.membership sample trapezoid)) + (or (<lte> bottom sample) + (<gte> top sample)))) ))))] ["Rev" number.Hash<Rev> r.rev &.trapezoid r/< r/<= r/> r/>=] @@ -142,10 +142,10 @@ (~not (&.membership sample (&.complement left))))) (test "Membership in the difference will never be higher than in the set being subtracted." - (bool/= (r/> (&.membership sample right) - (&.membership sample left)) - (r/< (&.membership sample left) - (&.membership sample (&.difference left right))))) + (bit/= (r/> (&.membership sample right) + (&.membership sample left)) + (r/< (&.membership sample left) + (&.membership sample (&.difference left right))))) )))) (context: "From predicates and sets" @@ -156,13 +156,13 @@ ($_ seq (test "Values that satisfy a predicate have membership = 1. Values that don't have membership = 0." - (bool/= (r/= ~true (&.membership sample (&.from-predicate n/even?))) - (n/even? sample))) + (bit/= (r/= ~true (&.membership sample (&.from-predicate n/even?))) + (n/even? sample))) (test "Values that belong to a set have membership = 1. Values that don't have membership = 0." - (bool/= (r/= ~true (&.membership sample (&.from-set set-10))) - (set.member? set-10 sample))) + (bit/= (r/= ~true (&.membership sample (&.from-set set-10))) + (set.member? set-10 sample))) )))) (context: "Thresholds" @@ -175,10 +175,10 @@ member? (&.to-predicate threshold fuzzy)]] ($_ seq (test "Can increase the threshold of membership of a fuzzy set." - (bool/= (r/> ~false (&.membership sample vip-fuzzy)) - (r/> threshold (&.membership sample fuzzy)))) + (bit/= (r/> ~false (&.membership sample vip-fuzzy)) + (r/> threshold (&.membership sample fuzzy)))) (test "Can turn fuzzy sets into predicates through a threshold." - (bool/= (member? sample) - (r/> threshold (&.membership sample fuzzy)))) + (bit/= (member? sample) + (r/> threshold (&.membership sample fuzzy)))) )))) diff --git a/stdlib/test/test/lux/math/modular.lux b/stdlib/test/test/lux/math/modular.lux index 8bbaf1292..47b8b8aba 100644 --- a/stdlib/test/test/lux/math/modular.lux +++ b/stdlib/test/test/lux/math/modular.lux @@ -4,7 +4,7 @@ [monad (#+ do)]] [data [product] - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] ["e" error] [text format]] @@ -39,20 +39,20 @@ (def: (comparison m/? i/?) (All [m] - (-> (-> (/.Mod m) (/.Mod m) Bool) - (-> Int Int Bool) - (-> (/.Mod m) (/.Mod m) Bool))) + (-> (-> (/.Mod m) (/.Mod m) Bit) + (-> Int Int Bit) + (-> (/.Mod m) (/.Mod m) Bit))) (function (_ param subject) - (bool/= (m/? param subject) - (i/? (value param) - (value subject))))) + (bit/= (m/? param subject) + (i/? (value param) + (value subject))))) (def: (arithmetic modulus m/! i/!) (All [m] (-> (/.Modulus m) (-> (/.Mod m) (/.Mod m) (/.Mod m)) (-> Int Int Int) - (-> (/.Mod m) (/.Mod m) Bool))) + (-> (/.Mod m) (/.Mod m) Bit))) (function (_ param subject) (|> (i/! (value param) (value subject)) @@ -91,13 +91,13 @@ ((comparison /.m/>= i/>=) param subject))) (test "Mod'ed values are ordered." - (and (bool/= (/.m/< param subject) - (not (/.m/>= param subject))) - (bool/= (/.m/> param subject) - (not (/.m/<= param subject))) - (bool/= (/.m/= param subject) - (not (or (/.m/< param subject) - (/.m/> param subject)))))) + (and (bit/= (/.m/< param subject) + (not (/.m/>= param subject))) + (bit/= (/.m/> param subject) + (not (/.m/<= param subject))) + (bit/= (/.m/= param subject) + (not (or (/.m/< param subject) + (/.m/> param subject)))))) (test "Can do arithmetic." (and ((arithmetic normalM /.m/+ i/+) param subject) @@ -145,6 +145,6 @@ (/.congruent? normalM _subject _subject)) (test "If 2 numbers are congruent under a modulus, then they must also be equal under the same modulus." - (bool/= (/.congruent? normalM _param _subject) - (/.m/= param subject))) + (bit/= (/.congruent? normalM _param _subject) + (/.m/= param subject))) )))) diff --git a/stdlib/test/test/lux/type/implicit.lux b/stdlib/test/test/lux/type/implicit.lux index e19f672e0..71e2f29c6 100644 --- a/stdlib/test/test/lux/type/implicit.lux +++ b/stdlib/test/test/lux/type/implicit.lux @@ -6,7 +6,7 @@ [functor] [monad (#+ do Monad)]] [data - [bool ("bool/" Equivalence<Bool>)] + [bit ("bit/" Equivalence<Bit>)] [number] [collection [list]]] [math @@ -22,8 +22,8 @@ ($_ seq (test "Can automatically select first-order structures." (let [(^open "list/") (list.Equivalence<List> number.Equivalence<Nat>)] - (and (bool/= (:: number.Equivalence<Nat> = x y) - (::: = x y)) + (and (bit/= (:: number.Equivalence<Nat> = x y) + (::: = x y)) (list/= (list.n/range +1 +10) (::: map inc (list.n/range +0 +9))) ))) diff --git a/stdlib/test/test/lux/type/object/protocol.lux b/stdlib/test/test/lux/type/object/protocol.lux index 0ec93442b..2e2ae212f 100644 --- a/stdlib/test/test/lux/type/object/protocol.lux +++ b/stdlib/test/test/lux/type/object/protocol.lux @@ -23,9 +23,9 @@ ((counter +0) (message []))) (protocol: Protocol0 - (method0 [Bool Nat Text] Bool) - (method1 [Nat Text Bool] Nat) - (method2 [Text Bool Nat] Text)) + (method0 [Bit Nat Text] Bit) + (method1 [Nat Text Bit] Nat) + (method2 [Text Bit Nat] Text)) (type: Object0 (Object Protocol0)) diff --git a/stdlib/test/test/lux/world/blob.lux b/stdlib/test/test/lux/world/blob.lux index f93b4e5dd..ea9dc4087 100644 --- a/stdlib/test/test/lux/world/blob.lux +++ b/stdlib/test/test/lux/world/blob.lux @@ -20,7 +20,7 @@ ["_eq" equivalence]]]]) (def: (succeed result) - (-> (e.Error Bool) Bool) + (-> (e.Error Bit) Bit) (case result (#e.Error _) false @@ -40,7 +40,7 @@ (:: r.Monad<Random> wrap output))))) (def: (bits-io bytes read write value) - (-> Nat (-> Nat /.Blob (e.Error Nat)) (-> Nat Nat /.Blob (e.Error Any)) Nat Bool) + (-> Nat (-> Nat /.Blob (e.Error Nat)) (-> Nat Nat /.Blob (e.Error Any)) Nat Bit) (let [blob (/.create +8) bits (n/* +8 bytes) capped-value (|> +1 (i64.left-shift bits) dec (i64.and value))] diff --git a/stdlib/test/test/lux/world/net/tcp.lux b/stdlib/test/test/lux/world/net/tcp.lux index 26b7703ea..1c315c7f5 100644 --- a/stdlib/test/test/lux/world/net/tcp.lux +++ b/stdlib/test/test/lux/world/net/tcp.lux @@ -42,7 +42,7 @@ (wrap (do P.Monad<Promise> [result (do T.Monad<Task> [[server-close server] (@.server port) - #let [from-worked? (: (T.Task Bool) + #let [from-worked? (: (T.Task Bit) (P.promise #.Nil)) _ (frp/map (function (_ socket) (do @ |