aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorEduardo Julian2022-11-21 16:40:51 -0400
committerEduardo Julian2022-11-21 16:40:51 -0400
commit224797231a8144f6ead1baab3b4b01a74cab629c (patch)
tree294aaadc4cc8dce8e40041aa318fa84de080002e /stdlib
parentdf0e015145981602b3f97113bcfa586b4f6d0757 (diff)
Added index section to documentation + re-named Primitive -> Nominal
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/source/documentation/lux.lux14
-rw-r--r--stdlib/source/documentation/lux/data/collection/array.lux2
-rw-r--r--stdlib/source/documentation/lux/data/color.lux13
-rw-r--r--stdlib/source/documentation/lux/data/color/named.lux9
-rw-r--r--stdlib/source/documentation/lux/meta/type.lux8
-rw-r--r--stdlib/source/documentation/lux/meta/type/linear.lux (renamed from stdlib/source/documentation/lux/meta/type/resource.lux)0
-rw-r--r--stdlib/source/documentation/lux/meta/type/nominal.lux (renamed from stdlib/source/documentation/lux/meta/type/primitive.lux)0
-rw-r--r--stdlib/source/format/lux/data/binary.lux20
-rw-r--r--stdlib/source/library/lux.lux78
-rw-r--r--stdlib/source/library/lux/control/concurrency/actor.lux4
-rw-r--r--stdlib/source/library/lux/control/concurrency/async.lux4
-rw-r--r--stdlib/source/library/lux/control/concurrency/atom.lux4
-rw-r--r--stdlib/source/library/lux/control/concurrency/incremental.lux6
-rw-r--r--stdlib/source/library/lux/control/concurrency/semaphore.lux8
-rw-r--r--stdlib/source/library/lux/control/concurrency/stm.lux4
-rw-r--r--stdlib/source/library/lux/control/concurrency/structured.lux6
-rw-r--r--stdlib/source/library/lux/control/function/polymorphism/context.lux4
-rw-r--r--stdlib/source/library/lux/control/io.lux4
-rw-r--r--stdlib/source/library/lux/control/lazy.lux4
-rw-r--r--stdlib/source/library/lux/control/security/capability.lux6
-rw-r--r--stdlib/source/library/lux/control/security/policy.lux6
-rw-r--r--stdlib/source/library/lux/control/thread.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/array.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/queue/priority.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/set/multi.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/set/ordered.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/stack.lux4
-rw-r--r--stdlib/source/library/lux/data/collection/tree/finger.lux4
-rw-r--r--stdlib/source/library/lux/data/color.lux192
-rw-r--r--stdlib/source/library/lux/data/color/cmyk.lux42
-rw-r--r--stdlib/source/library/lux/data/color/hsl.lux184
-rw-r--r--stdlib/source/library/lux/data/color/rgb.lux36
-rw-r--r--stdlib/source/library/lux/data/color/terminal.lux16
-rw-r--r--stdlib/source/library/lux/data/format/css.lux8
-rw-r--r--stdlib/source/library/lux/data/format/css/class.lux4
-rw-r--r--stdlib/source/library/lux/data/format/css/id.lux4
-rw-r--r--stdlib/source/library/lux/data/format/css/property.lux4
-rw-r--r--stdlib/source/library/lux/data/format/css/query.lux8
-rw-r--r--stdlib/source/library/lux/data/format/css/selector.lux16
-rw-r--r--stdlib/source/library/lux/data/format/css/style.lux4
-rw-r--r--stdlib/source/library/lux/data/format/css/value.lux18
-rw-r--r--stdlib/source/library/lux/data/format/html.lux10
-rw-r--r--stdlib/source/library/lux/data/format/markdown.lux106
-rw-r--r--stdlib/source/library/lux/data/format/tar.lux16
-rw-r--r--stdlib/source/library/lux/data/text.lux26
-rw-r--r--stdlib/source/library/lux/data/text/buffer.lux4
-rw-r--r--stdlib/source/library/lux/data/text/encoding.lux4
-rw-r--r--stdlib/source/library/lux/data/text/unicode/block.lux4
-rw-r--r--stdlib/source/library/lux/data/text/unicode/set.lux4
-rw-r--r--stdlib/source/library/lux/debug.lux2
-rw-r--r--stdlib/source/library/lux/documentation.lux85
-rw-r--r--stdlib/source/library/lux/ffi.jvm.lux92
-rw-r--r--stdlib/source/library/lux/ffi.lux10
-rw-r--r--stdlib/source/library/lux/ffi.old.lux56
-rw-r--r--stdlib/source/library/lux/ffi.php.lux8
-rw-r--r--stdlib/source/library/lux/ffi.scm.lux6
-rw-r--r--stdlib/source/library/lux/math/modular.lux4
-rw-r--r--stdlib/source/library/lux/math/modulus.lux4
-rw-r--r--stdlib/source/library/lux/math/number/frac.lux4
-rw-r--r--stdlib/source/library/lux/math/number/i32.lux2
-rw-r--r--stdlib/source/library/lux/meta.lux2
-rw-r--r--stdlib/source/library/lux/meta/compiler/default/platform.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/analysis/inference.lux10
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/analysis/type.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/analysis/jvm.lux42
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/jvm.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/lux.lux6
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/common.lux2
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/host.lux2
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/translation/jvm/value.lux2
-rw-r--r--stdlib/source/library/lux/meta/compiler/meta/archive.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/meta/archive/key.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/meta/archive/module/document.lux4
-rw-r--r--stdlib/source/library/lux/meta/compiler/meta/archive/registry.lux4
-rw-r--r--stdlib/source/library/lux/meta/macro/vocabulary.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/common_lisp.lux8
-rw-r--r--stdlib/source/library/lux/meta/target/js.lux8
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/bytecode/address.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/registry.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/stack.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/bytecode/instruction.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/constant.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/constant/tag.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/encoding/name.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/encoding/signed.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/encoding/unsigned.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/index.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/loader.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/modifier.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/modifier/inner.lux4
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/reflection.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/alias.lux2
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/category.lux22
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/descriptor.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/lux.lux14
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/parser.lux2
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/reflection.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/jvm/type/signature.lux6
-rw-r--r--stdlib/source/library/lux/meta/target/lua.lux8
-rw-r--r--stdlib/source/library/lux/meta/target/php.lux8
-rw-r--r--stdlib/source/library/lux/meta/target/python.lux10
-rw-r--r--stdlib/source/library/lux/meta/target/r.lux10
-rw-r--r--stdlib/source/library/lux/meta/target/ruby.lux8
-rw-r--r--stdlib/source/library/lux/meta/target/scheme.lux8
-rw-r--r--stdlib/source/library/lux/meta/type.lux26
-rw-r--r--stdlib/source/library/lux/meta/type/check.lux6
-rw-r--r--stdlib/source/library/lux/meta/type/dynamic.lux6
-rw-r--r--stdlib/source/library/lux/meta/type/linear.lux10
-rw-r--r--stdlib/source/library/lux/meta/type/nominal.lux (renamed from stdlib/source/library/lux/meta/type/primitive.lux)8
-rw-r--r--stdlib/source/library/lux/meta/type/poly.lux8
-rw-r--r--stdlib/source/library/lux/meta/type/quotient.lux6
-rw-r--r--stdlib/source/library/lux/meta/type/refinement.lux4
-rw-r--r--stdlib/source/library/lux/meta/type/unit.lux4
-rw-r--r--stdlib/source/library/lux/meta/type/variance.lux2
-rw-r--r--stdlib/source/library/lux/world/db/sql.lux6
-rw-r--r--stdlib/source/library/lux/world/environment.lux4
-rw-r--r--stdlib/source/library/lux/world/file.lux2
-rw-r--r--stdlib/source/library/lux/world/file/watch.lux4
-rw-r--r--stdlib/source/library/lux/world/locale.lux4
-rw-r--r--stdlib/source/library/lux/world/locale/language.lux4
-rw-r--r--stdlib/source/library/lux/world/locale/territory.lux4
-rw-r--r--stdlib/source/library/lux/world/net/http/cookie.lux8
-rw-r--r--stdlib/source/library/lux/world/net/http/version.lux12
-rw-r--r--stdlib/source/library/lux/world/net/mime.lux8
-rw-r--r--stdlib/source/library/lux/world/net/uri/scheme.lux10
-rw-r--r--stdlib/source/library/lux/world/time.lux4
-rw-r--r--stdlib/source/library/lux/world/time/date.lux4
-rw-r--r--stdlib/source/library/lux/world/time/duration.lux4
-rw-r--r--stdlib/source/library/lux/world/time/instant.lux6
-rw-r--r--stdlib/source/library/lux/world/time/solar.lux4
-rw-r--r--stdlib/source/library/lux/world/time/year.lux4
-rw-r--r--stdlib/source/parser/lux/data/binary.lux20
-rw-r--r--stdlib/source/parser/lux/meta/type.lux2
-rw-r--r--stdlib/source/program/aedifex/artifact/time/date.lux4
-rw-r--r--stdlib/source/program/aedifex/hash.lux8
-rw-r--r--stdlib/source/test/lux.lux6
-rw-r--r--stdlib/source/test/lux/data/collection/array.lux8
-rw-r--r--stdlib/source/test/lux/data/color.lux22
-rw-r--r--stdlib/source/test/lux/data/color/hsl.lux89
-rw-r--r--stdlib/source/test/lux/ffi.old.lux4
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux/analysis/inference.lux6
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux/analysis/module.lux6
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux/analysis/type.lux8
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux/phase/analysis/complex.lux4
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux2
-rw-r--r--stdlib/source/test/lux/meta/target/jvm.lux2
-rw-r--r--stdlib/source/test/lux/meta/type.lux52
-rw-r--r--stdlib/source/test/lux/meta/type/check.lux84
-rw-r--r--stdlib/source/test/lux/meta/type/nominal.lux (renamed from stdlib/source/test/lux/meta/type/primitive.lux)0
-rw-r--r--stdlib/source/test/lux/world/net.lux3
-rw-r--r--stdlib/source/unsafe/lux/data/binary.lux6
-rw-r--r--stdlib/source/unsafe/lux/data/collection/array.lux8
153 files changed, 1145 insertions, 880 deletions
diff --git a/stdlib/source/documentation/lux.lux b/stdlib/source/documentation/lux.lux
index 84fb5c9d7..07e6a2dc2 100644
--- a/stdlib/source/documentation/lux.lux
+++ b/stdlib/source/documentation/lux.lux
@@ -225,10 +225,10 @@
($.comment "=>")
($.example "Aw hell naw!"))
- ($.definition /.Primitive
- "Macro to treat define new primitive types."
- ($.example (Primitive "java.lang.Object"))
- ($.example (Primitive "java.util.List" [(Primitive "java.lang.Long")])))
+ ($.definition /.Nominal
+ "Macro to treat define new nominal types."
+ ($.example (Nominal "java.lang.Object"))
+ ($.example (Nominal "java.util.List" [(Nominal "java.lang.Long")])))
($.definition /.`
(format "Hygienic quasi-quotation as a macro."
@@ -324,7 +324,7 @@
($.example (type Type
(Rec @
(Variant
- {#Primitive Text (List @)}
+ {#Nominal Text (List @)}
{#Sum @ @}
{#Product @ @}
{#Function @ @}
@@ -642,8 +642,8 @@
... ($.example (def (reduced env type)
... (-> (List Type) Type Type)
... (when type
- ... {.#Primitive name params}
- ... {.#Primitive name (list#each (reduced env) params)}
+ ... {.#Nominal name params}
+ ... {.#Nominal name (list#each (reduced env) params)}
... (^with_template [<tag>]
... [{<tag> left right}
diff --git a/stdlib/source/documentation/lux/data/collection/array.lux b/stdlib/source/documentation/lux/data/collection/array.lux
index 0f2c5094f..b806af2a4 100644
--- a/stdlib/source/documentation/lux/data/collection/array.lux
+++ b/stdlib/source/documentation/lux/data/collection/array.lux
@@ -15,7 +15,7 @@
(list ($.module /._
"")
- ($.definition /.primitive)
+ ($.definition /.nominal)
($.definition /.equivalence)
($.definition /.monoid)
($.definition /.functor)
diff --git a/stdlib/source/documentation/lux/data/color.lux b/stdlib/source/documentation/lux/data/color.lux
index 77162cec2..768fb1ffb 100644
--- a/stdlib/source/documentation/lux/data/color.lux
+++ b/stdlib/source/documentation/lux/data/color.lux
@@ -24,10 +24,7 @@
(`` (def .public documentation
(List $.Documentation)
- (let [encoding (list ($.definition /.RGB
- "Red-Green-Blue color format.")
-
- ($.definition /.of_rgb)
+ (let [encoding (list ($.definition /.of_rgb)
($.definition /.rgb)
($.definition /.HSL
@@ -36,17 +33,11 @@
($.definition /.hsl)
($.definition /.of_hsl)
- ($.definition /.CMYK
- "Cyan-Magenta-Yellow-Key color format.")
-
($.definition /.hsb)
($.definition /.of_hsb)
($.definition /.HSB
- "Hue-Saturation-Brightness color format.")
-
- ($.definition /.cmyk)
- ($.definition /.of_cmyk))
+ "Hue-Saturation-Brightness color format."))
transformation (list ($.definition /.gray_scale)
($.definition /.darker)
($.definition /.brighter)
diff --git a/stdlib/source/documentation/lux/data/color/named.lux b/stdlib/source/documentation/lux/data/color/named.lux
index cd4e683e0..49eb0847d 100644
--- a/stdlib/source/documentation/lux/data/color/named.lux
+++ b/stdlib/source/documentation/lux/data/color/named.lux
@@ -12,16 +12,17 @@
["[0]" nat (.use "hex#[0]" hex)]]]]]
[\\library
["[0]" / (.only)
- ["/[1]" //]]])
+ ["/[1]" // (.only)
+ ["[0]" rgb]]]])
(def description
(template (_ <name>)
[($.definition <name>
(let [[red green blue] (//.rgb <name>)
[_ name] (symbol <name>)]
- (format "R:" (hex#encoded red)
- " G:" (hex#encoded green)
- " B:" (hex#encoded blue)
+ (format "R:" (hex#encoded (rgb.number red))
+ " G:" (hex#encoded (rgb.number green))
+ " B:" (hex#encoded (rgb.number blue))
" | " (text.replaced "_" " " name))))]))
(`` (def .public documentation
diff --git a/stdlib/source/documentation/lux/meta/type.lux b/stdlib/source/documentation/lux/meta/type.lux
index 292b084f2..b61ba2afd 100644
--- a/stdlib/source/documentation/lux/meta/type.lux
+++ b/stdlib/source/documentation/lux/meta/type.lux
@@ -14,14 +14,14 @@
[\\library
["[0]" /]]
["[0]" /
- ["[1][0]" primitive]
+ ["[1][0]" nominal]
["[1][0]" check]
["[1][0]" dynamic]
["[1][0]" implicit]
["[1][0]" poly]
["[1][0]" quotient]
["[1][0]" refinement]
- ["[1][0]" resource]
+ ["[1][0]" linear]
["[1][0]" unit]
["[1][0]" variance]])
@@ -269,14 +269,14 @@
(all list#composite
..\\parser
- /primitive.documentation
+ /nominal.documentation
/check.documentation
/dynamic.documentation
/implicit.documentation
/poly.documentation
/quotient.documentation
/refinement.documentation
- /resource.documentation
+ /linear.documentation
/unit.documentation
/variance.documentation
)
diff --git a/stdlib/source/documentation/lux/meta/type/resource.lux b/stdlib/source/documentation/lux/meta/type/linear.lux
index c8e34ab6e..c8e34ab6e 100644
--- a/stdlib/source/documentation/lux/meta/type/resource.lux
+++ b/stdlib/source/documentation/lux/meta/type/linear.lux
diff --git a/stdlib/source/documentation/lux/meta/type/primitive.lux b/stdlib/source/documentation/lux/meta/type/nominal.lux
index 036489d22..036489d22 100644
--- a/stdlib/source/documentation/lux/meta/type/primitive.lux
+++ b/stdlib/source/documentation/lux/meta/type/nominal.lux
diff --git a/stdlib/source/format/lux/data/binary.lux b/stdlib/source/format/lux/data/binary.lux
index 2eede5dfb..c04c5116b 100644
--- a/stdlib/source/format/lux/data/binary.lux
+++ b/stdlib/source/format/lux/data/binary.lux
@@ -251,16 +251,16 @@
(\\unsafe.has_8! offset <number>)
[(.++ offset)]
caseT))])])
- ([0 .#Primitive (..and ..text (..list again))]
- [1 .#Sum pair]
- [2 .#Product pair]
- [3 .#Function pair]
- [4 .#Parameter indexed]
- [5 .#Var indexed]
- [6 .#Ex indexed]
- [7 .#UnivQ quantified]
- [8 .#ExQ quantified]
- [9 .#Apply pair]
+ ([00 .#Nominal (..and ..text (..list again))]
+ [01 .#Sum pair]
+ [02 .#Product pair]
+ [03 .#Function pair]
+ [04 .#Parameter indexed]
+ [05 .#Var indexed]
+ [06 .#Ex indexed]
+ [07 .#UnivQ quantified]
+ [08 .#ExQ quantified]
+ [09 .#Apply pair]
[10 .#Named (..and ..symbol again)])
))))))
diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux
index 54daff3b3..535b103c8 100644
--- a/stdlib/source/library/lux.lux
+++ b/stdlib/source/library/lux.lux
@@ -116,7 +116,7 @@
#1)
... (type .public Tag
-... (Primitive "#Tag"))
+... (Nominal "#Tag"))
(.def# Tag
(.is_type#
{9 #1 [..prelude "Tag"]
@@ -124,7 +124,7 @@
#1)
... (type .public Slot
-... (Primitive "#Slot"))
+... (Nominal "#Slot"))
(.def# Slot
(.is_type#
{9 #1 [..prelude "Slot"]
@@ -172,7 +172,7 @@
... (type .public Type
... (Rec Type
... (Variant
-... {#Primitive Text (List Type)}
+... {#Nominal Text (List Type)}
... {#Sum Type Type}
... {#Product Type Type}
... {#Function Type Type}
@@ -194,7 +194,7 @@
{7 #0
{#End}
{1 #0
- ... Primitive
+ ... Nominal
{2 #0 Text Type_List}
{1 #0
... Sum
@@ -232,7 +232,7 @@
(.def# type_tags
(.is# {9 #0 Symbol List}
- {0 #1 [[..prelude "#Primitive"]
+ {0 #1 [[..prelude "#Nominal"]
{0 #1 [[..prelude "#Sum"]
{0 #1 [[..prelude "#Product"]
{0 #1 [[..prelude "#Function"]
@@ -245,7 +245,7 @@
{0 #1 [[..prelude "#Named"]
{0 #0}]}]}]}]}]}]}]}]}]}]}]})
#0)
-(.def# #Primitive (.as# Tag [(.is# Label' {#Some [0 #0 ..type_tags]}) Type]) #1)
+(.def# #Nominal (.as# Tag [(.is# Label' {#Some [0 #0 ..type_tags]}) Type]) #1)
(.def# #Sum (.as# Tag [(.is# Label' {#Some [1 #0 ..type_tags]}) Type]) #1)
(.def# #Product (.as# Tag [(.is# Label' {#Some [2 #0 ..type_tags]}) Type]) #1)
(.def# #Function (.as# Tag [(.is# Label' {#Some [3 #0 ..type_tags]}) Type]) #1)
@@ -939,11 +939,11 @@
.public)
... (type .public Macro
-... (Primitive "#Macro"))
+... (Nominal "#Macro"))
(.def# Macro
(.is# Type
{#Named [..prelude "Macro"]
- {#Primitive "#Macro" {#End}}})
+ {#Nominal "#Macro" {#End}}})
.public)
... Base functions & macros
@@ -1300,9 +1300,9 @@
(.i64_-# (.i64_-# depth id) 0))
... Recur
- {#Primitive name parameters}
- {#Primitive name (list#each (__adjusted_quantified_type__ permission depth)
- parameters)}
+ {#Nominal name parameters}
+ {#Nominal name (list#each (__adjusted_quantified_type__ permission depth)
+ parameters)}
{#Sum left right}
{#Sum (__adjusted_quantified_type__ permission depth left)
@@ -1875,7 +1875,7 @@
(def' .public UnQuote
Type
{#Named [..prelude "UnQuote"]
- {#Primitive "#Macro/UnQuote" {#End}}})
+ {#Nominal "#Macro/UnQuote" {#End}}})
(def' .public (unquote it)
(-> Macro UnQuote)
@@ -1888,7 +1888,7 @@
(def' .public Spliced_UnQuote
Type
{#Named [..prelude "Spliced_UnQuote"]
- {#Primitive "#Macro/Spliced_UnQuote" {#End}}})
+ {#Nominal "#Macro/Spliced_UnQuote" {#End}}})
(def' .public (spliced_unquote it)
(-> Macro Spliced_UnQuote)
@@ -2042,7 +2042,7 @@
(def' .private (type#= left right)
(-> Type Type Bit)
- ({[{#Primitive nameL parametersL} {#Primitive nameR parametersR}]
+ ({[{#Nominal nameL parametersL} {#Nominal nameR parametersR}]
(all and'
(text#= nameL nameR)
(.i64_=# (list#size parametersL) (list#size parametersR))
@@ -2263,17 +2263,17 @@
(untemplated_tuple @composite untemplated replace? subst elements)}
[replace? token]))
-(def' .public Primitive
+(def' .public Nominal
Macro
(macro (_ tokens)
({{#Item [_ {#Text class_name}] {#End}}
- (meta#in (list (variant$ (list (symbol$ [..prelude "#Primitive"]) (text$ class_name) |#End|))))
+ (meta#in (list (variant$ (list (symbol$ [..prelude "#Nominal"]) (text$ class_name) |#End|))))
{#Item [_ {#Text class_name}] {#Item [_ {#Tuple params}] {#End}}}
- (meta#in (list (variant$ (list (symbol$ [..prelude "#Primitive"]) (text$ class_name) (untemplated_list params)))))
+ (meta#in (list (variant$ (list (symbol$ [..prelude "#Nominal"]) (text$ class_name) (untemplated_list params)))))
_
- (failure (wrong_syntax_error [..prelude "Primitive"]))}
+ (failure (wrong_syntax_error [..prelude "Nominal"]))}
tokens)))
(def' .public `
@@ -2624,7 +2624,7 @@
(def' .private (macro_type? type)
(-> Type Bit)
- ({{#Named ["library/lux" "Macro"] {#Primitive "#Macro" {#End}}}
+ ({{#Named ["library/lux" "Macro"] {#Nominal "#Macro" {#End}}}
#1
_
@@ -3106,9 +3106,9 @@
(def' .private (type#encoded type)
(-> Type Text)
- ({{#Primitive name params}
+ ({{#Nominal name params}
(all text#composite
- "(Primitive " (text#encoded name)
+ "(Nominal " (text#encoded name)
(|> params
(list#each (function' [it] (|> it type#encoded (text#composite " "))))
list#reversed
@@ -3179,28 +3179,28 @@
(in (symbol$ name))
{#Right [type value]}
- ({{#Primitive "#Bit" {#End}}
+ ({{#Nominal "#Bit" {#End}}
(in (bit$ (as Bit value)))
- {#Primitive "#Frac" {#End}}
+ {#Nominal "#Frac" {#End}}
(in (frac$ (as Frac value)))
- {#Primitive "#Text" {#End}}
+ {#Nominal "#Text" {#End}}
(in (text$ (as Text value)))
- {#Primitive "#I64" {#Item {#Primitive "#Nat" {#End}} {#End}}}
+ {#Nominal "#I64" {#Item {#Nominal "#Nat" {#End}} {#End}}}
(in (nat$ (as Nat value)))
- {#Primitive "#I64" {#Item {#Primitive "#Int" {#End}} {#End}}}
+ {#Nominal "#I64" {#Item {#Nominal "#Int" {#End}} {#End}}}
(in (int$ (as Int value)))
- {#Primitive "#I64" {#Item {#Primitive "#Rev" {#End}} {#End}}}
+ {#Nominal "#I64" {#Item {#Nominal "#Rev" {#End}} {#End}}}
(in (rev$ (as Rev value)))
- {#Primitive "#Tag" {#End}}
+ {#Nominal "#Tag" {#End}}
(in (symbol$ name))
- {#Primitive "#Slot" {#End}}
+ {#Nominal "#Slot" {#End}}
(in (symbol$ name))
_
@@ -3255,7 +3255,7 @@
(def' .public Pattern
Type
{#Named [..prelude "Pattern"]
- {#Primitive "#Macro/Pattern" {#End}}})
+ {#Nominal "#Macro/Pattern" {#End}}})
(def' .public (pattern it)
(-> Macro Pattern)
@@ -4638,8 +4638,8 @@
(def (clean_type variables it)
(-> (List [Nat (Maybe Type)]) Type Type)
(when it
- {#Primitive name parameters}
- {#Primitive name (list#each (clean_type variables) parameters)}
+ {#Nominal name parameters}
+ {#Nominal name (list#each (clean_type variables) parameters)}
{#Sum left right}
{#Sum (clean_type variables left)
@@ -5309,8 +5309,8 @@
(def (type_code type)
(-> Type Code)
(when type
- {#Primitive name params}
- (` {.#Primitive (, (text$ name)) (, (untemplated_list (list#each type_code params)))})
+ {#Nominal name params}
+ (` {.#Nominal (, (text$ name)) (, (untemplated_list (list#each type_code params)))})
(with_template#pattern [<tag>]
[{<tag> left right}
@@ -5570,7 +5570,7 @@
type+value (..definition_value symbol)
.let [[type value] type+value]]
(when (anonymous_type type)
- {#Primitive "#Text" {#End}}
+ {#Nominal "#Text" {#End}}
(in (as ..Text value))
_
@@ -5664,7 +5664,7 @@
(in {#Item =module =refers})))))
(type .public Immediate_UnQuote
- (Primitive "#Macro/Immediate_UnQuote"))
+ (Nominal "#Macro/Immediate_UnQuote"))
(def .public immediate_unquote
(-> Macro Immediate_UnQuote)
@@ -5791,9 +5791,9 @@
(def .public Rec
(let [recursive_type (is (-> Code Code Text Code Code)
(function (recursive_type g!self g!dummy name body)
- (` {.#Apply (..Primitive "")
+ (` {.#Apply (..Nominal "")
(.All ((, g!self) (, g!dummy))
- (, (let$ (local$ name) (` {.#Apply (..Primitive "") (, g!self)})
+ (, (let$ (local$ name) (` {.#Apply (..Nominal "") (, g!self)})
body)))})))]
(macro (_ tokens)
(when tokens
@@ -5821,7 +5821,7 @@
Type
(let [[_ short] (symbol <type>)]
{#Named [..prelude short]
- {.#Primitive (text#composite "#Extension/" short) (list)}}))]
+ {.#Nominal (text#composite "#Extension/" short) (list)}}))]
[Analysis]
[Synthesis]
diff --git a/stdlib/source/library/lux/control/concurrency/actor.lux b/stdlib/source/library/lux/control/concurrency/actor.lux
index 3693401df..47a31df8d 100644
--- a/stdlib/source/library/lux/control/concurrency/actor.lux
+++ b/stdlib/source/library/lux/control/concurrency/actor.lux
@@ -17,7 +17,7 @@
[macro
["[0]" local]]
[type (.only sharing)
- ["[0]" primitive (.only representation abstraction)]]]]]
+ ["[0]" nominal (.only representation abstraction)]]]]]
[//
["[0]" atom (.only Atom atom)]
["[0]" async (.only Async Resolver) (.use "[1]#[0]" monad)]
@@ -50,7 +50,7 @@
{.#None}
(in {.#End}))))
- (primitive.def .public (Actor s)
+ (nominal.def .public (Actor s)
(Record
[#obituary [(Async (<Obituary> Actor s))
(Resolver (<Obituary> Actor s))]
diff --git a/stdlib/source/library/lux/control/concurrency/async.lux b/stdlib/source/library/lux/control/concurrency/async.lux
index 6385844ba..31c56c477 100644
--- a/stdlib/source/library/lux/control/concurrency/async.lux
+++ b/stdlib/source/library/lux/control/concurrency/async.lux
@@ -16,7 +16,7 @@
[macro
["^" pattern]]
[type (.only sharing)
- ["[0]" primitive (.except def)]
+ ["[0]" nominal (.except def)]
["[0]" variance (.only Mutable)]]]]]
[//
["[0]" thread (.only Delay)]
@@ -30,7 +30,7 @@
(template (_ a)
[(-> a (IO Any))]))
-(primitive.def (Async'' a)
+(nominal.def (Async'' a)
(Atom [(Value a) (List (Handler a))])
(type .public (Async' r w)
diff --git a/stdlib/source/library/lux/control/concurrency/atom.lux b/stdlib/source/library/lux/control/concurrency/atom.lux
index 79f902288..962149143 100644
--- a/stdlib/source/library/lux/control/concurrency/atom.lux
+++ b/stdlib/source/library/lux/control/concurrency/atom.lux
@@ -15,7 +15,7 @@
[meta
["@" target]
[type
- ["[0]" primitive (.except def)]
+ ["[0]" nominal (.except def)]
["[0]" variance (.only Mutable)]]]]])
(with_expansions [<jvm> (these (ffi.import (java/util/concurrent/atomic/AtomicReference a)
@@ -27,7 +27,7 @@
@.jvm <jvm>
(these)))
-(primitive.def (Atom'' a)
+(nominal.def (Atom'' a)
(with_expansions [<jvm> (java/util/concurrent/atomic/AtomicReference a)]
(for @.old <jvm>
@.jvm <jvm>
diff --git a/stdlib/source/library/lux/control/concurrency/incremental.lux b/stdlib/source/library/lux/control/concurrency/incremental.lux
index 95af6f6c7..383624097 100644
--- a/stdlib/source/library/lux/control/concurrency/incremental.lux
+++ b/stdlib/source/library/lux/control/concurrency/incremental.lux
@@ -13,14 +13,14 @@
["[0]" list]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[//
["[0]" atom (.only Atom)]])
(type (Dependency a)
(-> a (IO Any)))
-(primitive.def .public (Computation a)
+(nominal.def .public (Computation a)
(Atom [a (List (Dependency a))])
(def .public value
@@ -117,7 +117,7 @@
_ (watch! update! right)]
(in output))))
- (primitive.def .public (Var a)
+ (nominal.def .public (Var a)
(Computation a)
(def .public (var value)
diff --git a/stdlib/source/library/lux/control/concurrency/semaphore.lux b/stdlib/source/library/lux/control/concurrency/semaphore.lux
index 2de5b8b31..04d4333ff 100644
--- a/stdlib/source/library/lux/control/concurrency/semaphore.lux
+++ b/stdlib/source/library/lux/control/concurrency/semaphore.lux
@@ -19,7 +19,7 @@
["i" int]]]
[meta
[type
- ["[0]" primitive (.except def)]
+ ["[0]" nominal (.except def)]
["[0]" refinement]]]]]
[//
["[0]" atom (.only Atom)]
@@ -31,7 +31,7 @@
#open_positions Int
#waiting_list (Queue (Resolver Any))]))
-(primitive.def .public Semaphore
+(nominal.def .public Semaphore
(Atom State)
(def most_positions_possible
@@ -96,7 +96,7 @@
(in {try.#Success (the #open_positions post)})))))))
)
-(primitive.def .public Mutex
+(nominal.def .public Mutex
Semaphore
(def .public (mutex _)
@@ -126,7 +126,7 @@
(type .public Limit
(, (refinement.type limit)))
-(primitive.def .public Barrier
+(nominal.def .public Barrier
(Record
[#limit Limit
#count (Atom Nat)
diff --git a/stdlib/source/library/lux/control/concurrency/stm.lux b/stdlib/source/library/lux/control/concurrency/stm.lux
index c653b051b..ad1e8d459 100644
--- a/stdlib/source/library/lux/control/concurrency/stm.lux
+++ b/stdlib/source/library/lux/control/concurrency/stm.lux
@@ -17,7 +17,7 @@
[macro
["^" pattern]]
[type (.only sharing)
- ["[0]" primitive (.except def)]
+ ["[0]" nominal (.except def)]
["[0]" variance (.only Mutable)]]]]]
[//
["[0]" atom (.only Atom atom)]
@@ -27,7 +27,7 @@
(type (Observer a)
(-> a (IO Any)))
-(primitive.def (Var'' a)
+(nominal.def (Var'' a)
(Atom [a (List (Sink a))])
(type .public (Var' r w)
diff --git a/stdlib/source/library/lux/control/concurrency/structured.lux b/stdlib/source/library/lux/control/concurrency/structured.lux
index cd7295f4e..7e4b60571 100644
--- a/stdlib/source/library/lux/control/concurrency/structured.lux
+++ b/stdlib/source/library/lux/control/concurrency/structured.lux
@@ -15,13 +15,13 @@
["[0]" nat]]]
[meta
[type (.only sharing)
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1]" async (.use "[1]#[0]" monad)]
["[0]" thread (.only Delay)]
["[0]" atom (.only Atom)]])
-(primitive.def .public (Async value)
+(nominal.def .public (Async value)
(Record
[#cancel! (IO Bit)
#async (//.Async (Maybe value))])
@@ -205,7 +205,7 @@
(type Pending
(Dictionary ID (Ex (_ value) (Async value))))
- (primitive.def .public (Scope value)
+ (nominal.def .public (Scope value)
(Record
[#pending (Atom [ID Pending])
#itself (Async value)])
diff --git a/stdlib/source/library/lux/control/function/polymorphism/context.lux b/stdlib/source/library/lux/control/function/polymorphism/context.lux
index be28c494e..576d44cf1 100644
--- a/stdlib/source/library/lux/control/function/polymorphism/context.lux
+++ b/stdlib/source/library/lux/control/function/polymorphism/context.lux
@@ -25,7 +25,7 @@
[syntax (.only syntax)
["[0]" export]]]
[type
- ["[0]" primitive (.except def #name)]]]]]
+ ["[0]" nominal (.except def #name)]]]]]
[///
["//" mixin]])
@@ -37,7 +37,7 @@
(scope (alteration context))))
(with_expansions [<representation> Symbol]
- (primitive.def .public Layer
+ (nominal.def .public Layer
<representation>
(.def .public layer
diff --git a/stdlib/source/library/lux/control/io.lux b/stdlib/source/library/lux/control/io.lux
index 9da4eda3c..71267a7a1 100644
--- a/stdlib/source/library/lux/control/io.lux
+++ b/stdlib/source/library/lux/control/io.lux
@@ -12,9 +12,9 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (IO a)
+(nominal.def .public (IO a)
(-> Any a)
(def .public io'
diff --git a/stdlib/source/library/lux/control/lazy.lux b/stdlib/source/library/lux/control/lazy.lux
index 4a71170a8..ef4c8b816 100644
--- a/stdlib/source/library/lux/control/lazy.lux
+++ b/stdlib/source/library/lux/control/lazy.lux
@@ -16,9 +16,9 @@
[macro (.only with_symbols)
[syntax (.only syntax)]]
[type (.only sharing)
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Lazy a)
+(nominal.def .public (Lazy a)
(-> [] a)
(def .public (lazy' generator)
diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux
index bdcc86586..112de0720 100644
--- a/stdlib/source/library/lux/control/security/capability.lux
+++ b/stdlib/source/library/lux/control/security/capability.lux
@@ -21,9 +21,9 @@
["[0]" export]
["|[0]|" declaration]]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Capability brand input output)
+(nominal.def .public (Capability brand input output)
(-> input output)
(def .public (use it input)
@@ -45,7 +45,7 @@
.let [[name vars] declaration]
g!brand (at ! each (|>> %.code code.text)
(macro.symbol (format (%.symbol [this_module name]))))
- .let [type (` (..Capability (.Primitive (, g!brand)) (, input) (, output)))]]
+ .let [type (` (..Capability (.Nominal (, g!brand)) (, input) (, output)))]]
(in (list (` (type (, export_policy)
(, (|declaration|.format declaration))
(, type)))
diff --git a/stdlib/source/library/lux/control/security/policy.lux b/stdlib/source/library/lux/control/security/policy.lux
index 8bd2e9a45..517d60638 100644
--- a/stdlib/source/library/lux/control/security/policy.lux
+++ b/stdlib/source/library/lux/control/security/policy.lux
@@ -7,9 +7,9 @@
[monad (.only Monad)]]
[meta
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Policy brand value label)
+(nominal.def .public (Policy brand value label)
value
(type .public (Can_Upgrade brand label value)
@@ -78,7 +78,7 @@
)
(with_template [<brand> <value> <upgrade> <downgrade>]
- [(primitive.def .public <brand>
+ [(nominal.def .public <brand>
Any
(type .public <value>
diff --git a/stdlib/source/library/lux/control/thread.lux b/stdlib/source/library/lux/control/thread.lux
index 952eabac4..222ea8b2c 100644
--- a/stdlib/source/library/lux/control/thread.lux
+++ b/stdlib/source/library/lux/control/thread.lux
@@ -14,13 +14,13 @@
[meta
["@" target]
[type
- ["[0]" primitive (.except def)]
+ ["[0]" nominal (.except def)]
["[0]" variance (.only Mutable)]]]]])
(type .public (Thread ! a)
(-> ! a))
-(primitive.def (Box'' t a)
+(nominal.def (Box'' t a)
(Array a)
(type .public (Box' t r w)
diff --git a/stdlib/source/library/lux/data/collection/array.lux b/stdlib/source/library/lux/data/collection/array.lux
index 3158b04d6..3e522b255 100644
--- a/stdlib/source/library/lux/data/collection/array.lux
+++ b/stdlib/source/library/lux/data/collection/array.lux
@@ -17,9 +17,9 @@
[variance (.only)]]]]]
["!" \\unsafe])
-(def .public primitive
+(def .public nominal
Text
- !.primitive)
+ !.nominal)
(type .public Array'
!.Array')
diff --git a/stdlib/source/library/lux/data/collection/queue/priority.lux b/stdlib/source/library/lux/data/collection/queue/priority.lux
index 49f6cc0a4..17cf5ee16 100644
--- a/stdlib/source/library/lux/data/collection/queue/priority.lux
+++ b/stdlib/source/library/lux/data/collection/queue/priority.lux
@@ -15,7 +15,7 @@
["n" nat (.use "[1]#[0]" interval)]]]
[meta
[type (.only by_example)
- ["[0]" primitive (.only abstraction representation)]]]]])
+ ["[0]" nominal (.only abstraction representation)]]]]])
(type .public Priority
Nat)
@@ -37,7 +37,7 @@
..builder)
@))
-(primitive.def .public (Queue a)
+(nominal.def .public (Queue a)
(Maybe (Tree :@: Priority a))
(def .public empty
diff --git a/stdlib/source/library/lux/data/collection/set/multi.lux b/stdlib/source/library/lux/data/collection/set/multi.lux
index d7087830b..46c225ab4 100644
--- a/stdlib/source/library/lux/data/collection/set/multi.lux
+++ b/stdlib/source/library/lux/data/collection/set/multi.lux
@@ -15,13 +15,13 @@
[macro
["^" pattern]]
[type
- ["[0]" primitive (.only abstraction representation)]]]]]
+ ["[0]" nominal (.only abstraction representation)]]]]]
["[0]" // (.only)
[//
["[0]" list (.use "[1]#[0]" mix monoid)]
["[0]" dictionary (.only Dictionary)]]])
-(primitive.def .public (Set a)
+(nominal.def .public (Set a)
(Dictionary a Nat)
(def .public empty
diff --git a/stdlib/source/library/lux/data/collection/set/ordered.lux b/stdlib/source/library/lux/data/collection/set/ordered.lux
index 3ff035d4b..fcaa369c7 100644
--- a/stdlib/source/library/lux/data/collection/set/ordered.lux
+++ b/stdlib/source/library/lux/data/collection/set/ordered.lux
@@ -11,9 +11,9 @@
["/" ordered]]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Set a)
+(nominal.def .public (Set a)
(/.Dictionary a a)
(def .public empty
diff --git a/stdlib/source/library/lux/data/collection/stack.lux b/stdlib/source/library/lux/data/collection/stack.lux
index b910f3e21..4d1d6e0cb 100644
--- a/stdlib/source/library/lux/data/collection/stack.lux
+++ b/stdlib/source/library/lux/data/collection/stack.lux
@@ -9,9 +9,9 @@
["//" list]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Stack a)
+(nominal.def .public (Stack a)
(List a)
(def .public empty
diff --git a/stdlib/source/library/lux/data/collection/tree/finger.lux b/stdlib/source/library/lux/data/collection/tree/finger.lux
index 4e0ed56de..b54a30582 100644
--- a/stdlib/source/library/lux/data/collection/tree/finger.lux
+++ b/stdlib/source/library/lux/data/collection/tree/finger.lux
@@ -11,10 +11,10 @@
["[0]" list (.use "[1]#[0]" monoid)]]]
[meta
[type
- ["[0]" primitive (.only abstraction representation)]]]]])
+ ["[0]" nominal (.only abstraction representation)]]]]])
... https://en.wikipedia.org/wiki/Finger_tree
-(primitive.def .public (Tree @ t v)
+(nominal.def .public (Tree @ t v)
(Record
[#monoid (Monoid t)
#tag t
diff --git a/stdlib/source/library/lux/data/color.lux b/stdlib/source/library/lux/data/color.lux
index d61e01b02..23388a61c 100644
--- a/stdlib/source/library/lux/data/color.lux
+++ b/stdlib/source/library/lux/data/color.lux
@@ -19,9 +19,10 @@
["[0]" i64]]]
[meta
[type
- ["[0]" primitive]]]]]
+ ["[0]" nominal]]]]]
[/
- ["[0]" rgb (.only RGB)]])
+ ["[0]" rgb (.only RGB)]
+ ["[0]" hsl]])
(def top
(-- rgb.limit))
@@ -37,22 +38,19 @@
(-> Frac Nat)
(|>> (f.* rgb_factor) f.int .nat))
-(type .public HSL
- [Frac Frac Frac])
-
(type .public HSB
[Frac Frac Frac])
-(primitive.def .public Color
+(nominal.def .public Color
RGB
(def .public of_rgb
(-> RGB Color)
- (|>> primitive.abstraction))
+ (|>> nominal.abstraction))
(def .public rgb
(-> Color RGB)
- (|>> primitive.representation))
+ (|>> nominal.representation))
(def .public equivalence
(Equivalence Color)
@@ -65,7 +63,7 @@
(with_template [<color> <rgb>]
[(def .public <color>
Color
- (primitive.abstraction <rgb>))]
+ (nominal.abstraction <rgb>))]
[black rgb.black]
[white rgb.white]
@@ -76,14 +74,14 @@
(Monoid Color)
(implementation
(def identity
- (primitive.abstraction
+ (nominal.abstraction
(at <rgb> identity)))
(def (composite left right)
- (primitive.abstraction
+ (nominal.abstraction
(at <rgb> composite
- (primitive.representation left)
- (primitive.representation right))))))]
+ (nominal.representation left)
+ (nominal.representation right))))))]
[addition rgb.addition]
[subtraction rgb.subtraction]
@@ -91,83 +89,11 @@
(def .public complement
(-> Color Color)
- (|>> primitive.representation
+ (|>> nominal.representation
rgb.complement
- primitive.abstraction))
+ nominal.abstraction))
)
-(def .public (hsl color)
- (-> Color HSL)
- (let [[red green blue] (rgb color)
- red (..down (rgb.number red))
- green (..down (rgb.number green))
- blue (..down (rgb.number blue))
- max (all f.max red green blue)
- min (all f.min red green blue)
- luminance (|> (f.+ max min) (f./ +2.0))]
- (if (f.= max min)
- ... Achromatic
- [+0.0
- +0.0
- luminance]
- ... Chromatic
- (let [diff (|> max (f.- min))
- saturation (|> diff
- (f./ (if (f.> +0.5 luminance)
- (|> +2.0 (f.- max) (f.- min))
- (|> max (f.+ min)))))
- hue' (cond (f.= red max)
- (|> green (f.- blue) (f./ diff)
- (f.+ (if (f.< blue green) +6.0 +0.0)))
-
- (f.= green max)
- (|> blue (f.- red) (f./ diff)
- (f.+ +2.0))
-
- ... (f.= blue max)
- (|> red (f.- green) (f./ diff)
- (f.+ +4.0)))]
- [(|> hue' (f./ +6.0))
- saturation
- luminance]))))
-
-(def (hue_rgb p q t)
- (-> Frac Frac Frac Nat)
- (let [t (cond (f.< +0.0 t) (f.+ +1.0 t)
- (f.> +1.0 t) (f.- +1.0 t)
- ... else
- t)
- f2/3 (f./ +3.0 +2.0)]
- (..up (cond (f.< (f./ +6.0 +1.0) t)
- (|> q (f.- p) (f.* +6.0) (f.* t) (f.+ p))
-
- (f.< (f./ +2.0 +1.0) t)
- q
-
- (f.< f2/3 t)
- (|> q (f.- p) (f.* (|> f2/3 (f.- t))) (f.* +6.0) (f.+ p))
-
- ... else
- p))))
-
-(def .public (of_hsl [hue saturation luminance])
- (-> HSL Color)
- (|> (if (f.= +0.0 saturation)
- ... Achromatic
- (let [intensity (..up luminance)]
- (rgb.rgb intensity intensity intensity))
- ... Chromatic
- (let [q (if (f.< +0.5 luminance)
- (|> saturation (f.+ +1.0) (f.* luminance))
- (|> luminance (f.+ saturation) (f.- (f.* saturation luminance))))
- p (|> luminance (f.* +2.0) (f.- q))
- third (|> +1.0 (f./ +3.0))]
- (rgb.rgb (|> hue (f.+ third) (hue_rgb p q))
- (|> hue (hue_rgb p q))
- (|> hue (f.- third) (hue_rgb p q)))))
- try.trusted
- of_rgb))
-
(def .public (hsb color)
(-> Color HSB)
(let [[red green blue] (rgb color)
@@ -260,12 +186,16 @@
(with_template [<op> <name>]
[(def .public (<name> ratio color)
(-> Frac Color Color)
- (let [[hue saturation luminance] (hsl color)]
- (of_hsl [hue
- (|> saturation
- (f.* (|> +1.0 (<op> (..normal ratio))))
- (f.min +1.0))
- luminance])))]
+ (let [color (hsl.of_rgb (rgb color))]
+ (|> (hsl.hsl (hsl.hue color)
+ (|> color
+ hsl.saturation
+ (f.* (|> +1.0 (<op> (..normal ratio))))
+ (f.min +1.0))
+ (hsl.luminance color))
+ try.trusted
+ hsl.rgb
+ of_rgb)))]
[f.+ saturated]
[f.- un_saturated]
@@ -273,22 +203,34 @@
(def .public (gray_scale color)
(-> Color Color)
- (let [[_ _ luminance] (hsl color)]
- (of_hsl [+0.0
- +0.0
- luminance])))
+ (let [color (hsl.of_rgb (rgb color))]
+ (|> (hsl.hsl +0.0
+ +0.0
+ (hsl.luminance color))
+ try.trusted
+ hsl.rgb
+ of_rgb)))
(with_template [<name> <1> <2>]
[(`` (def .public (<name> color)
(-> Color [Color Color Color])
- (let [[hue saturation luminance] (hsl color)]
+ (let [hsl (hsl.of_rgb (rgb color))
+ hue (hsl.hue hsl)
+ saturation (hsl.saturation hsl)
+ luminance (hsl.luminance hsl)]
[color
- (of_hsl [(|> hue (f.+ <1>) ..normal)
- saturation
- luminance])
- (of_hsl [(|> hue (f.+ <2>) ..normal)
- saturation
- luminance])])))]
+ (|> (hsl.hsl (|> hue (f.+ <1>) ..normal)
+ saturation
+ luminance)
+ try.trusted
+ hsl.rgb
+ of_rgb)
+ (|> (hsl.hsl (|> hue (f.+ <2>) ..normal)
+ saturation
+ luminance)
+ try.trusted
+ hsl.rgb
+ of_rgb)])))]
[triad (|> +1.0 (f./ +3.0)) (|> +2.0 (f./ +3.0))]
[clash (|> +1.0 (f./ +4.0)) (|> +3.0 (f./ +4.0))]
@@ -320,27 +262,27 @@
(type .public Palette
(-> Spread Nat Color (List Color)))
-(`` (def .public (analogous spread variations color)
- Palette
- (let [[hue saturation brightness] (hsb color)
- spread (..normal spread)]
- (list#each (function (_ idx)
- (of_hsb [(|> idx ++ .int int.frac (f.* spread) (f.+ hue) ..normal)
- saturation
- brightness]))
- (list.indices variations)))))
-
-(`` (def .public (monochromatic spread variations color)
- Palette
- (let [[hue saturation brightness] (hsb color)
- spread (..normal spread)]
- (|> (list.indices variations)
- (list#each (|>> ++ .int int.frac
- (f.* spread)
- (f.+ brightness)
- ..normal
- [hue saturation]
- of_hsb))))))
+(def .public (analogous spread variations color)
+ Palette
+ (let [[hue saturation brightness] (hsb color)
+ spread (..normal spread)]
+ (list#each (function (_ idx)
+ (of_hsb [(|> idx ++ .int int.frac (f.* spread) (f.+ hue) ..normal)
+ saturation
+ brightness]))
+ (list.indices variations))))
+
+(def .public (monochromatic spread variations color)
+ Palette
+ (let [[hue saturation brightness] (hsb color)
+ spread (..normal spread)]
+ (|> (list.indices variations)
+ (list#each (|>> ++ .int int.frac
+ (f.* spread)
+ (f.+ brightness)
+ ..normal
+ [hue saturation]
+ of_hsb)))))
(type .public Alpha
Rev)
diff --git a/stdlib/source/library/lux/data/color/cmyk.lux b/stdlib/source/library/lux/data/color/cmyk.lux
index 3e22ab333..d519d2cea 100644
--- a/stdlib/source/library/lux/data/color/cmyk.lux
+++ b/stdlib/source/library/lux/data/color/cmyk.lux
@@ -15,19 +15,19 @@
["[0]" int]]]
[meta
[type
- ["[0]" primitive]]]]]
+ ["[0]" nominal]]]]]
[//
["[0]" rgb (.only RGB)]])
(with_expansions [<min> +0.0
<max> +1.0]
- (primitive.def .public Value
+ (nominal.def .public Value
Frac
(with_template [<number> <name>]
[(def .public <name>
Value
- (primitive.abstraction <number>))]
+ (nominal.abstraction <number>))]
[<min> least]
[<max> most]
@@ -36,24 +36,24 @@
(exception.def .public (invalid it)
(Exception Frac)
(exception.report
- (list ["Minimum" (%.frac (primitive.representation ..least))]
- ["Maximum" (%.frac (primitive.representation ..most))]
+ (list ["Minimum" (%.frac (nominal.representation ..least))]
+ ["Maximum" (%.frac (nominal.representation ..most))]
["Value" (%.frac it)])))
(def .public (value it)
(-> Frac
(Try Value))
- (if (or (f.> (primitive.representation ..most)
+ (if (or (f.> (nominal.representation ..most)
it)
- (f.< (primitive.representation ..least)
+ (f.< (nominal.representation ..least)
it))
(exception.except ..invalid [it])
- {try.#Success (primitive.abstraction it)}))
+ {try.#Success (nominal.abstraction it)}))
(def .public number
(-> Value
Frac)
- (|>> primitive.representation))
+ (|>> nominal.representation))
(type .public CMYK
(Record
@@ -66,10 +66,10 @@
(Equivalence CMYK)
(implementation
(def (= [cR mR yR kR] [cS mS yS kS])
- (and (f.= (primitive.representation cR) (primitive.representation cS))
- (f.= (primitive.representation mR) (primitive.representation mS))
- (f.= (primitive.representation yR) (primitive.representation yS))
- (f.= (primitive.representation kR) (primitive.representation kS))))))
+ (and (f.= (nominal.representation cR) (nominal.representation cS))
+ (f.= (nominal.representation mR) (nominal.representation mS))
+ (f.= (nominal.representation yR) (nominal.representation yS))
+ (f.= (nominal.representation kR) (nominal.representation kS))))))
(def top
(-- rgb.limit))
@@ -106,26 +106,26 @@
cyan (|> <max> (f.- red) (f.- key) (f.* f))
magenta (|> <max> (f.- green) (f.- key) (f.* f))
yellow (|> <max> (f.- blue) (f.- key) (f.* f))]
- [#cyan (primitive.abstraction cyan)
- #magenta (primitive.abstraction magenta)
- #yellow (primitive.abstraction yellow)
- #key (primitive.abstraction key)]))
+ [#cyan (nominal.abstraction cyan)
+ #magenta (nominal.abstraction magenta)
+ #yellow (nominal.abstraction yellow)
+ #key (nominal.abstraction key)]))
(def .public (rgb it)
(-> CMYK
RGB)
- (when (primitive.representation (the #key it))
+ (when (nominal.representation (the #key it))
<max>
rgb.black
key
(let [~key (opposite key)
red (f.* ~key
- (opposite (primitive.representation (the #cyan it))))
+ (opposite (nominal.representation (the #cyan it))))
green (f.* ~key
- (opposite (primitive.representation (the #magenta it))))
+ (opposite (nominal.representation (the #magenta it))))
blue (f.* ~key
- (opposite (primitive.representation (the #yellow it))))]
+ (opposite (nominal.representation (the #yellow it))))]
(|> (rgb.rgb (..up red)
(..up green)
(..up blue))
diff --git a/stdlib/source/library/lux/data/color/hsl.lux b/stdlib/source/library/lux/data/color/hsl.lux
new file mode 100644
index 000000000..dd2155f2f
--- /dev/null
+++ b/stdlib/source/library/lux/data/color/hsl.lux
@@ -0,0 +1,184 @@
+(.require
+ [library
+ [lux (.except)
+ [abstract
+ [equivalence (.only Equivalence)]
+ [monad (.only do)]]
+ [control
+ ["[0]" try (.only Try)]
+ ["[0]" exception (.only Exception)]]
+ [data
+ [text
+ ["%" \\format]]]
+ [math
+ [number
+ ["i" int]
+ ["f" frac]]]
+ [meta
+ [type
+ ["[0]" nominal]]]]]
+ [//
+ ["[0]" rgb (.only RGB)]])
+
+(def top
+ (-- rgb.limit))
+
+(def rgb_factor
+ (|> top .int i.frac))
+
+(def down
+ (-> Nat
+ Frac)
+ (|>> .int i.frac (f./ rgb_factor)))
+
+(def up
+ (-> Frac
+ Nat)
+ (|>> (f.* rgb_factor) f.int .nat))
+
+(type .public Value
+ Frac)
+
+(with_template [<value> <name>]
+ [(def .public <name>
+ Value
+ <value>)]
+
+ [+0.0 least]
+ [+1.0 most]
+ )
+
+(exception.def .public (invalid value)
+ (Exception Frac)
+ (exception.report
+ (list ["Value" (%.frac value)]
+ ["Minimum" (%.frac ..least)]
+ ["Maximum" (%.frac ..most)])))
+
+(def .public (value it)
+ (-> Frac
+ (Try Value))
+ (if (or (f.< ..least it)
+ (f.> ..most it))
+ (exception.except ..invalid [it])
+ {try.#Success it}))
+
+(nominal.def .public HSL
+ (Record
+ [#hue Value
+ #saturation Value
+ #luminance Value])
+
+ (def .public equivalence
+ (Equivalence HSL)
+ (implementation
+ (def (= left right)
+ (`` (and (,, (with_template [<slot>]
+ [(f.= (the <slot> (nominal.representation left))
+ (the <slot> (nominal.representation right)))]
+
+ [#hue]
+ [#saturation]
+ [#luminance]
+ )))))))
+
+ (with_template [<name> <slot>]
+ [(def .public <name>
+ (-> HSL
+ Value)
+ (|>> nominal.representation
+ (the <slot>)))]
+
+ [hue #hue]
+ [saturation #saturation]
+ [luminance #luminance]
+ )
+
+ (def .public (hsl hue saturation luminance)
+ (-> Frac Frac Frac
+ (Try HSL))
+ (do try.monad
+ [hue (..value hue)
+ saturation (..value saturation)
+ luminance (..value luminance)]
+ (in (nominal.abstraction
+ [#hue hue
+ #saturation saturation
+ #luminance luminance]))))
+
+ (def .public (of_rgb it)
+ (-> RGB
+ HSL)
+ (let [red (..down (rgb.number (the rgb.#red it)))
+ green (..down (rgb.number (the rgb.#green it)))
+ blue (..down (rgb.number (the rgb.#blue it)))
+
+ max (all f.max red green blue)
+ min (all f.min red green blue)
+ luminance (|> (f.+ max min) (f./ +2.0))]
+ (nominal.abstraction
+ (if (f.= max min)
+ ... Achromatic
+ [#hue ..least
+ #saturation ..least
+ #luminance luminance]
+ ... Chromatic
+ (let [diff (|> max (f.- min))
+ saturation (|> diff
+ (f./ (if (f.> +0.5 luminance)
+ (|> +2.0 (f.- max) (f.- min))
+ (|> max (f.+ min)))))
+ hue' (cond (f.= red max)
+ (|> green (f.- blue) (f./ diff)
+ (f.+ (if (f.< blue green) +6.0 +0.0)))
+
+ (f.= green max)
+ (|> blue (f.- red) (f./ diff)
+ (f.+ +2.0))
+
+ ... (f.= blue max)
+ (|> red (f.- green) (f./ diff)
+ (f.+ +4.0)))]
+ [#hue (|> hue' (f./ +6.0))
+ #saturation saturation
+ #luminance luminance])))))
+
+ (def (hue_rgb p q t)
+ (-> Frac Frac Frac
+ Nat)
+ (let [t (cond (f.< +0.0 t) (f.+ +1.0 t)
+ (f.> +1.0 t) (f.- +1.0 t)
+ ... else
+ t)
+ f2/3 (f./ +3.0 +2.0)]
+ (..up (cond (f.< (f./ +6.0 +1.0) t)
+ (|> q (f.- p) (f.* +6.0) (f.* t) (f.+ p))
+
+ (f.< (f./ +2.0 +1.0) t)
+ q
+
+ (f.< f2/3 t)
+ (|> q (f.- p) (f.* (|> f2/3 (f.- t))) (f.* +6.0) (f.+ p))
+
+ ... else
+ p))))
+
+ (def .public (rgb it)
+ (-> HSL
+ RGB)
+ (let [[hue saturation luminance] (nominal.representation it)]
+ (try.trusted
+ (if (f.= ..least saturation)
+ ... Achromatic
+ (let [intensity (..up luminance)]
+ (rgb.rgb intensity intensity intensity))
+ ... Chromatic
+ (let [q (if (f.< +0.5 luminance)
+ (|> saturation (f.+ +1.0) (f.* luminance))
+ (|> luminance (f.+ saturation) (f.- (f.* saturation luminance))))
+ p (|> luminance (f.* +2.0) (f.- q))
+ third (|> +1.0 (f./ +3.0))]
+ (rgb.rgb (|> hue (f.+ third) (hue_rgb p q))
+ (|> hue (hue_rgb p q))
+ (|> hue (f.- third) (hue_rgb p q))))))))
+ )
diff --git a/stdlib/source/library/lux/data/color/rgb.lux b/stdlib/source/library/lux/data/color/rgb.lux
index 23ac52a30..8c14e7903 100644
--- a/stdlib/source/library/lux/data/color/rgb.lux
+++ b/stdlib/source/library/lux/data/color/rgb.lux
@@ -18,22 +18,22 @@
["[0]" i64]]]
[meta
[type
- ["[0]" primitive]]]]])
+ ["[0]" nominal]]]]])
(def .public limit
Nat
256)
-(primitive.def .public Value
+(nominal.def .public Value
Nat
(def .public least
Value
- (primitive.abstraction 0))
+ (nominal.abstraction 0))
(def .public most
Value
- (primitive.abstraction (-- ..limit)))
+ (nominal.abstraction (-- ..limit)))
(exception.def .public (invalid it)
(Exception Nat)
@@ -45,12 +45,12 @@
(-> Nat
(Try Value))
(if (n.< ..limit it)
- {try.#Success (primitive.abstraction it)}
+ {try.#Success (nominal.abstraction it)}
(exception.except ..invalid [it])))
(def .public number
(-> Value Nat)
- (|>> primitive.representation))
+ (|>> nominal.representation))
(type .public RGB
(Record
@@ -73,9 +73,9 @@
(Equivalence RGB)
(implementation
(def (= [rR gR bR] [rS gS bS])
- (and (n.= (primitive.representation rR) (primitive.representation rS))
- (n.= (primitive.representation gR) (primitive.representation gS))
- (n.= (primitive.representation bR) (primitive.representation bS))))))
+ (and (n.= (nominal.representation rR) (nominal.representation rS))
+ (n.= (nominal.representation gR) (nominal.representation gS))
+ (n.= (nominal.representation bR) (nominal.representation bS))))))
(def .public hash
(Hash RGB)
@@ -85,13 +85,13 @@
(def (hash [r g b])
(all i64.or
- (i64.left_shifted 16 (primitive.representation r))
- (i64.left_shifted 08 (primitive.representation g))
- (primitive.representation b)))))
+ (i64.left_shifted 16 (nominal.representation r))
+ (i64.left_shifted 08 (nominal.representation g))
+ (nominal.representation b)))))
(def (opposite_intensity value)
(-> Nat Nat)
- (|> (primitive.representation ..most)
+ (|> (nominal.representation ..most)
(n.- value)))
(def .public (complement it)
@@ -99,9 +99,9 @@
(`` [(,, (with_template [<slot>]
[<slot> (|> it
(the <slot>)
- primitive.representation
+ nominal.representation
opposite_intensity
- primitive.abstraction)]
+ nominal.abstraction)]
[#red]
[#green]
@@ -131,9 +131,9 @@
(let [left (<left> left)
right (<right> right)]
(`` [(,, (with_template [<slot>]
- [<slot> (primitive.abstraction
- (<composite> (primitive.representation (the <slot> left))
- (primitive.representation (the <slot> right))))]
+ [<slot> (nominal.abstraction
+ (<composite> (nominal.representation (the <slot> left))
+ (nominal.representation (the <slot> right))))]
[#red]
[#green]
diff --git a/stdlib/source/library/lux/data/color/terminal.lux b/stdlib/source/library/lux/data/color/terminal.lux
index 1f368de0b..d59f2986b 100644
--- a/stdlib/source/library/lux/data/color/terminal.lux
+++ b/stdlib/source/library/lux/data/color/terminal.lux
@@ -15,19 +15,19 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive]]]]]
+ ["[0]" nominal]]]]]
["[0]" // (.only Color)
["[0]" rgb]])
-(primitive.def .public Command
+(nominal.def .public Command
[Text Text]
(def .public equivalence
(Equivalence Command)
(implementation
(def (= reference it)
- (let [[beforeR afterR] (primitive.representation Command reference)
- [beforeI afterI] (primitive.representation Command it)]
+ (let [[beforeR afterR] (nominal.representation Command reference)
+ [beforeI afterI] (nominal.representation Command it)]
(and (text#= beforeR beforeI)
(text#= afterR afterI))))))
@@ -38,7 +38,7 @@
(def .public (with command text)
(-> Command Text
Text)
- (let [[before after] (primitive.representation Command command)]
+ (let [[before after] (nominal.representation Command command)]
(%.format before
text
after)))
@@ -57,13 +57,13 @@
Command
(|> [(%.format ..command (%.nat <fg>) "m")
..default_foreground_color]
- (primitive.abstraction Command))))
+ (nominal.abstraction Command))))
(`` (def .public (,, (template.symbol [<color> "_background"]))
Command
(|> [(%.format ..command (%.nat <bg>) "m")
..default_background_color]
- (primitive.abstraction Command))))]
+ (nominal.abstraction Command))))]
[030 040 black]
[031 041 red]
@@ -95,7 +95,7 @@
";" (%.nat (rgb.number (the rgb.#blue it)))
"m")
<reset>]
- (primitive.abstraction Command))))]
+ (nominal.abstraction Command))))]
["38;2" foreground ..default_foreground_color]
["48;2" background ..default_background_color]
diff --git a/stdlib/source/library/lux/data/format/css.lux b/stdlib/source/library/lux/data/format/css.lux
index 53b9238ec..256e70010 100644
--- a/stdlib/source/library/lux/data/format/css.lux
+++ b/stdlib/source/library/lux/data/format/css.lux
@@ -14,7 +14,7 @@
["[0]" nat]]]
[meta
[type
- ["[0]" primitive (.except Frame def)]]]
+ ["[0]" nominal (.except Frame def)]]]
[world
[net (.only URL)]]]]
["[0]" /
@@ -25,10 +25,10 @@
["[1][0]" style]
["[1][0]" query (.only Query)]])
-(primitive.def .public Common Any)
-(primitive.def .public Special Any)
+(nominal.def .public Common Any)
+(nominal.def .public Special Any)
-(primitive.def .public (CSS brand)
+(nominal.def .public (CSS brand)
Text
(def .public css
diff --git a/stdlib/source/library/lux/data/format/css/class.lux b/stdlib/source/library/lux/data/format/css/class.lux
index a3def1196..46e980a47 100644
--- a/stdlib/source/library/lux/data/format/css/class.lux
+++ b/stdlib/source/library/lux/data/format/css/class.lux
@@ -11,9 +11,9 @@
[macro
[syntax (.only syntax)]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public Class
+(nominal.def .public Class
Text
(def .public class
diff --git a/stdlib/source/library/lux/data/format/css/id.lux b/stdlib/source/library/lux/data/format/css/id.lux
index cd6c1c4cf..fc93ec1bb 100644
--- a/stdlib/source/library/lux/data/format/css/id.lux
+++ b/stdlib/source/library/lux/data/format/css/id.lux
@@ -11,9 +11,9 @@
[macro
[syntax (.only syntax)]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public ID
+(nominal.def .public ID
Text
(def .public id
diff --git a/stdlib/source/library/lux/data/format/css/property.lux b/stdlib/source/library/lux/data/format/css/property.lux
index e34b27b1d..192f0395a 100644
--- a/stdlib/source/library/lux/data/format/css/property.lux
+++ b/stdlib/source/library/lux/data/format/css/property.lux
@@ -10,7 +10,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[//
[value (.only All
Number
@@ -57,7 +57,7 @@
(syntax (_ [symbol s.text])
(in (list (code.local (text.replaced "-" "_" symbol))))))
-(primitive.def .public (Property brand)
+(nominal.def .public (Property brand)
Text
(def .public name
diff --git a/stdlib/source/library/lux/data/format/css/query.lux b/stdlib/source/library/lux/data/format/css/query.lux
index 095d12b40..de3defe3b 100644
--- a/stdlib/source/library/lux/data/format/css/query.lux
+++ b/stdlib/source/library/lux/data/format/css/query.lux
@@ -11,7 +11,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1][0]" value (.only Value Length Count Resolution Ratio
Orientation Scan Boolean Update
@@ -24,7 +24,7 @@
(syntax (_ [symbol s.text])
(in (list (code.local (text.replaced "-" "_" symbol))))))
-(primitive.def .public Media
+(nominal.def .public Media
Text
(def .public media
@@ -42,7 +42,7 @@
["speech"]
))
-(primitive.def .public Feature
+(nominal.def .public Feature
Text
(def .public feature
@@ -102,7 +102,7 @@
)
)
-(primitive.def .public Query
+(nominal.def .public Query
Text
(def .public query
diff --git a/stdlib/source/library/lux/data/format/css/selector.lux b/stdlib/source/library/lux/data/format/css/selector.lux
index a76428c86..757ca8df8 100644
--- a/stdlib/source/library/lux/data/format/css/selector.lux
+++ b/stdlib/source/library/lux/data/format/css/selector.lux
@@ -11,7 +11,7 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]
+ ["[0]" nominal (.except def)]]]
[world
["[0]" locale (.only Locale)]]]]
["[0]" //
@@ -23,21 +23,21 @@
(type .public Tag Label)
(type .public Attribute Label)
-(primitive.def .public (Generic brand) Any)
+(nominal.def .public (Generic brand) Any)
(with_template [<generic> <brand>]
- [(primitive.def <brand> Any)
+ [(nominal.def <brand> Any)
(type .public <generic> (Generic <brand>))]
[Can_Chain Can_Chain']
[Cannot_Chain Cannot_Chain']
)
-(primitive.def .public Unique Any)
-(primitive.def .public Specific Any)
-(primitive.def .public Composite Any)
+(nominal.def .public Unique Any)
+(nominal.def .public Specific Any)
+(nominal.def .public Composite Any)
-(primitive.def .public (Selector kind)
+(nominal.def .public (Selector kind)
Text
(def .public selector
@@ -169,7 +169,7 @@
(format ":not")
abstraction))
- (primitive.def .public Index
+ (nominal.def .public Index
Text
(def .public index
diff --git a/stdlib/source/library/lux/data/format/css/style.lux b/stdlib/source/library/lux/data/format/css/style.lux
index ddcbbc291..d1bd1899d 100644
--- a/stdlib/source/library/lux/data/format/css/style.lux
+++ b/stdlib/source/library/lux/data/format/css/style.lux
@@ -8,12 +8,12 @@
["[0]" list (.use "[1]#[0]" mix)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1][0]" value (.only Value)]
["[1][0]" property (.only Property)]])
-(primitive.def .public Style
+(nominal.def .public Style
Text
(def .public empty
diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux
index 0a46fddbe..6886dad69 100644
--- a/stdlib/source/library/lux/data/format/css/value.lux
+++ b/stdlib/source/library/lux/data/format/css/value.lux
@@ -24,7 +24,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]
+ ["[0]" nominal (.except def)]]]
[world
[net (.only URL)]]]]
[//
@@ -36,7 +36,7 @@
(def enumeration
(template (_ <abstraction> <representation> <out> <sample>+ <definition>+)
- [(primitive.def .public <abstraction>
+ [(nominal.def .public <abstraction>
<representation>
(def .public <out>
@@ -58,7 +58,7 @@
raw
(|> raw (text.split_at 1) maybe.trusted product.right))))
-(primitive.def .public (Value brand)
+(nominal.def .public (Value brand)
Text
(def .public value
@@ -76,11 +76,11 @@
[unset "unset"]
)
- (primitive.def .public (Numeric kind) Any)
+ (nominal.def .public (Numeric kind) Any)
(with_template [<name>]
[(with_expansions [<name>' (template.symbol [<name> "'"])]
- (primitive.def .public <name>' Any)
+ (nominal.def .public <name>' Any)
(type .public <name>
(Numeric <name>')))]
@@ -91,7 +91,7 @@
)
(with_template [<brand> <alias>+ <value>+]
- [(primitive.def .public <brand> Any)
+ [(nominal.def .public <brand> Any)
(`` (with_template [<name> <value>]
[(def .public <name>
@@ -905,7 +905,7 @@
(abstraction (format (%.nat horizontal) ..slice_separator
(%.nat vertical))))
- (primitive.def .public Stop
+ (nominal.def .public Stop
Text
(def .public stop
@@ -929,7 +929,7 @@
(representation Value start) ..stop_separator
(representation Value end))))
- (primitive.def .public Hint
+ (nominal.def .public Hint
Text
(def .public hint
@@ -950,7 +950,7 @@
(type .public (List/1 a)
[a (List a)])
- (primitive.def .public Angle
+ (nominal.def .public Angle
Text
(def .public angle
diff --git a/stdlib/source/library/lux/data/format/html.lux b/stdlib/source/library/lux/data/format/html.lux
index 0dc8a42b5..77beb4f7f 100644
--- a/stdlib/source/library/lux/data/format/html.lux
+++ b/stdlib/source/library/lux/data/format/html.lux
@@ -16,7 +16,7 @@
[target
["[0]" js]]
[type
- ["[0]" primitive (.except def)]]]
+ ["[0]" nominal (.except def)]]]
[world
[net (.only URL)]]]]
[//
@@ -86,11 +86,11 @@
(-> Tag Text)
(text.enclosed ["</" ">"]))
-(primitive.def .public (HTML brand)
+(nominal.def .public (HTML brand)
Text
(.with_template [<name> <brand>]
- [(primitive.def <brand> Any)
+ [(nominal.def <brand> Any)
(type .public <name> (HTML <brand>))]
[Meta Meta']
@@ -108,11 +108,11 @@
)
(.with_template [<super> <super_raw> <sub>+]
- [(primitive.def (<super_raw> brand) Any)
+ [(nominal.def (<super_raw> brand) Any)
(type .public <super> (HTML (<super_raw> Any)))
(`` (.with_template [<sub> <sub_raw>]
- [(primitive.def <sub_raw> Any)
+ [(nominal.def <sub_raw> Any)
(type .public <sub> (HTML (<super_raw> <sub_raw>)))]
(,, (template.spliced <sub>+))))]
diff --git a/stdlib/source/library/lux/data/format/markdown.lux b/stdlib/source/library/lux/data/format/markdown.lux
index 11c9f6e9f..e533b908b 100644
--- a/stdlib/source/library/lux/data/format/markdown.lux
+++ b/stdlib/source/library/lux/data/format/markdown.lux
@@ -8,14 +8,15 @@
["[0]" list (.use "[1]#[0]" functor)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]
+ ["[0]" nominal]]]
[world
[net (.only URL)]]]])
... https://www.markdownguide.org/basic-syntax/
(def safe
- (-> Text Text)
+ (-> Text
+ Text)
(|>> (text.replaced "\" "\\")
(text.replaced "`" "\`")
(text.replaced "*" "\*")
@@ -32,27 +33,29 @@
(text.replaced "." "\.")
(text.replaced "!" "\!")))
-(primitive.def .public Span Any)
-(primitive.def .public Block Any)
+(nominal.def .public Span Any)
+(nominal.def .public Block Any)
-(primitive.def .public (Markdown brand)
+(nominal.def .public (Markdown brand)
Text
(def .public empty
Markdown
- (abstraction ""))
+ (nominal.abstraction ""))
(def .public text
- (-> Text (Markdown Span))
- (|>> ..safe abstraction))
+ (-> Text
+ (Markdown Span))
+ (|>> ..safe nominal.abstraction))
(def blank_line
(format text.new_line text.new_line))
(with_template [<name> <prefix>]
[(def .public (<name> content)
- (-> Text (Markdown Block))
- (abstraction (format <prefix> " " (..safe content) ..blank_line)))]
+ (-> (Markdown Span)
+ (Markdown Block))
+ (nominal.abstraction (format <prefix> " " (nominal.representation content) ..blank_line)))]
[heading/1 "#"]
[heading/2 "##"]
@@ -63,30 +66,35 @@
)
(def (block content)
- (-> Text (Markdown Block))
- (abstraction (format content ..blank_line)))
+ (-> Text
+ (Markdown Block))
+ (nominal.abstraction (format content ..blank_line)))
(def .public paragraph
- (-> (Markdown Span) (Markdown Block))
- (|>> representation ..block))
+ (-> (Markdown Span)
+ (Markdown Block))
+ (|>> nominal.representation ..block))
(def .public break
(Markdown Span)
- (abstraction (format " " text.new_line)))
+ (nominal.abstraction (format " " text.new_line)))
(with_template [<name> <wrapper>]
[(def .public <name>
- (-> (Markdown Span) (Markdown Span))
- (|>> representation
+ (-> (Markdown Span)
+ (Markdown Span))
+ (|>> nominal.representation
(text.enclosed [<wrapper> <wrapper>])
- abstraction))]
+ nominal.abstraction))]
[bold "**"]
[italic "_"]
)
(def (prefix with)
- (-> Text (-> Text Text))
+ (-> Text
+ (-> Text
+ Text))
(|>> (text.all_split_by text.new_line)
(list#each (function (_ line)
(if (text.empty? line)
@@ -95,25 +103,27 @@
(text.interposed text.new_line)))
(def indent
- (-> Text Text)
+ (-> Text
+ Text)
(..prefix text.tab))
(def .public quote
- (-> (Markdown Block) (Markdown Block))
- (|>> representation
+ (-> (Markdown Block)
+ (Markdown Block))
+ (|>> nominal.representation
(..prefix "> ")
- abstraction))
+ nominal.abstraction))
(def .public numbered_list
(-> (List [(Markdown Span) (Maybe (Markdown Block))])
(Markdown Block))
(|>> list.enumeration
(list#each (function (_ [idx [summary detail]])
- (format "1. " (representation summary)
+ (format "1. " (nominal.representation summary)
(when detail
{.#Some detail}
(|> detail
- representation
+ nominal.representation
..indent
(text.enclosed [text.new_line text.new_line])
(format text.new_line))
@@ -127,11 +137,11 @@
(-> (List [(Markdown Span) (Maybe (Markdown Block))])
(Markdown Block))
(|>> (list#each (function (_ [summary detail])
- (format "* " (representation summary)
+ (format "* " (nominal.representation summary)
(when detail
{.#Some detail}
(|> detail
- representation
+ nominal.representation
..indent
(text.enclosed [text.new_line text.new_line])
(format text.new_line))
@@ -143,19 +153,22 @@
... A snippet of code.
(def .public snippet
- (-> Text (Markdown Span))
- (|>> (text.enclosed ["`` " " ``"]) abstraction))
+ (-> Text
+ (Markdown Span))
+ (|>> (text.enclosed ["`` " " ``"]) nominal.abstraction))
... A (generic) block of code.
(def .public generic_code
- (-> Text (Markdown Block))
+ (-> Text
+ (Markdown Block))
(let [open (format "```" text.new_line)
close (format text.new_line "```")]
(|>> (text.enclosed [open close]) ..block)))
... A block of code of a specific language.
(def .public (code language block)
- (-> Text Text (Markdown Block))
+ (-> Text Text
+ (Markdown Block))
(let [open (format "```" language text.new_line)
close (format text.new_line "```")]
(|> block
@@ -163,24 +176,32 @@
..block)))
(def .public (image description url)
- (-> Text URL (Markdown Span))
- (abstraction (format "![" (..safe description) "](" url ")")))
+ (-> Text URL
+ (Markdown Span))
+ (nominal.abstraction (format "![" (..safe description) "](" url ")")))
(def .public horizontal_rule
(Markdown Block)
(..block "___"))
+ (def .public (anchor name)
+ (-> Text
+ (Markdown Span))
+ (nominal.abstraction (format "<a name=" name "></a>")))
+
(def .public (link description url)
- (-> (Markdown Span) URL (Markdown Span))
- (abstraction (format "[" (representation description) "](" url ")")))
+ (-> (Markdown Span) URL
+ (Markdown Span))
+ (nominal.abstraction (format "[" (nominal.representation description) "](" url ")")))
(type .public Email
Text)
(with_template [<name> <type>]
[(def .public <name>
- (-> <type> (Markdown Span))
- (|>> (text.enclosed ["<" ">"]) abstraction))]
+ (-> <type>
+ (Markdown Span))
+ (|>> (text.enclosed ["<" ">"]) nominal.abstraction))]
[url URL]
[email Email]
@@ -188,14 +209,17 @@
(with_template [<name> <brand> <infix>]
[(def .public (<name> pre post)
- (-> (Markdown <brand>) (Markdown <brand>) (Markdown <brand>))
- (abstraction (format (representation pre) <infix> (representation post))))]
+ (-> (Markdown <brand>) (Markdown <brand>)
+ (Markdown <brand>))
+ (nominal.abstraction (format (nominal.representation pre) <infix> (nominal.representation post))))]
[and Span " "]
[then Block ""]
)
(def .public markdown
- (All (_ a) (-> (Markdown a) Text))
- (|>> representation))
+ (All (_ a)
+ (-> (Markdown a)
+ Text))
+ (|>> nominal.representation))
)
diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux
index 8daa5be57..c98ef6ee5 100644
--- a/stdlib/source/library/lux/data/format/tar.lux
+++ b/stdlib/source/library/lux/data/format/tar.lux
@@ -34,7 +34,7 @@
[macro
["^" pattern]]
[type
- ["[0]" primitive (.except def #name)]]]
+ ["[0]" nominal (.except def #name)]]]
[world
["[0]" file]
[time
@@ -79,7 +79,7 @@
(list ["Value" (%.nat value)]
["Maximum" (%.nat (-- <limit>))])))
- (primitive.def .public <type>
+ (nominal.def .public <type>
Nat
(def .public (<in> value)
@@ -164,7 +164,7 @@
[value (at n.octal decoded digits)]
(..big value)))))
-(primitive.def Checksum
+(nominal.def Checksum
Text
(def from_checksum
@@ -257,7 +257,7 @@
(binary!.slice 0 (++ end) string))))))))
(with_template [<type> <representation> <size> <exception> <in> <out> <format> <parser> <none>]
- [(primitive.def .public <type>
+ [(nominal.def .public <type>
<representation>
(exception.def .public (<exception> value)
@@ -315,7 +315,7 @@
(def magic_size Size 7)
-(primitive.def Magic
+(nominal.def Magic
Text
(def ustar
@@ -402,7 +402,7 @@
... devminor
(..small_number ..device_size)))
-(primitive.def Link_Flag
+(nominal.def Link_Flag
Char
(def link_flag
@@ -451,7 +451,7 @@
(exception.except ..invalid_link_flag [(.nat it)]))))))
)
-(primitive.def .public Mode
+(nominal.def .public Mode
Nat
(def .public mode
@@ -540,7 +540,7 @@
(list.repeated ..content_size)
(list#mix n.* 1)))
-(primitive.def .public Content
+(nominal.def .public Content
[Big Binary]
(def .public (content it)
diff --git a/stdlib/source/library/lux/data/text.lux b/stdlib/source/library/lux/data/text.lux
index cc8bf71b8..6222ada19 100644
--- a/stdlib/source/library/lux/data/text.lux
+++ b/stdlib/source/library/lux/data/text.lux
@@ -224,15 +224,15 @@
(for @.old
(as Text
("jvm invokevirtual:java.lang.String:replace:java.lang.CharSequence,java.lang.CharSequence"
- (as (Primitive "java.lang.String") template)
- (as (Primitive "java.lang.CharSequence") pattern)
- (as (Primitive "java.lang.CharSequence") replacement)))
+ (as (Nominal "java.lang.String") template)
+ (as (Nominal "java.lang.CharSequence") pattern)
+ (as (Nominal "java.lang.CharSequence") replacement)))
@.jvm
(as Text
(.jvm_member_invoke_virtual# [] "java.lang.String" "replace" []
- (as (Primitive "java.lang.String") template)
- ["Ljava/lang/CharSequence;" (as (Primitive "java.lang.CharSequence") pattern)]
- ["Ljava/lang/CharSequence;" (as (Primitive "java.lang.CharSequence") replacement)]))
+ (as (Nominal "java.lang.String") template)
+ ["Ljava/lang/CharSequence;" (as (Nominal "java.lang.CharSequence") pattern)]
+ ["Ljava/lang/CharSequence;" (as (Nominal "java.lang.CharSequence") replacement)]))
@.js
... TODO: Remove this when Nashorn is no longer being used.
(..if_nashorn
@@ -287,18 +287,18 @@
(def (hash input)
(for @.old
(|> input
- (is (Primitive "java.lang.Object"))
+ (is (Nominal "java.lang.Object"))
"jvm invokevirtual:java.lang.Object:hashCode:"
"jvm convert int-to-long"
(as Nat))
@.jvm
(|> input
- (as (Primitive "java.lang.Object"))
+ (as (Nominal "java.lang.Object"))
(.jvm_member_invoke_virtual# [] "java.lang.Object" "hashCode" [])
.jvm_conversion_int_to_long#
.jvm_object_cast#
- (is (Primitive "java.lang.Long"))
+ (is (Nominal "java.lang.Long"))
(as Nat))
... Platform-independent default.
(let [length (.text_size# input)]
@@ -358,11 +358,11 @@
(for @.old
(as Text
("jvm invokevirtual:java.lang.String:toLowerCase:"
- (as (Primitive "java.lang.String") value)))
+ (as (Nominal "java.lang.String") value)))
@.jvm
(as Text
(.jvm_member_invoke_virtual# [] "java.lang.String" "toLowerCase" []
- (as (Primitive "java.lang.String") value)))
+ (as (Nominal "java.lang.String") value)))
@.js
(as Text
("js object do" "toLowerCase" value []))
@@ -381,11 +381,11 @@
(for @.old
(as Text
("jvm invokevirtual:java.lang.String:toUpperCase:"
- (as (Primitive "java.lang.String") value)))
+ (as (Nominal "java.lang.String") value)))
@.jvm
(as Text
(.jvm_member_invoke_virtual# [] "java.lang.String" "toUpperCase" []
- (as (Primitive "java.lang.String") value)))
+ (as (Nominal "java.lang.String") value)))
@.js
(as Text
("js object do" "toUpperCase" value []))
diff --git a/stdlib/source/library/lux/data/text/buffer.lux b/stdlib/source/library/lux/data/text/buffer.lux
index 17b603e3b..5b1bf4a6f 100644
--- a/stdlib/source/library/lux/data/text/buffer.lux
+++ b/stdlib/source/library/lux/data/text/buffer.lux
@@ -17,7 +17,7 @@
[meta
["@" target]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //])
(with_expansions [<jvm> (these (import java/lang/CharSequence
@@ -49,7 +49,7 @@
)
(these))))
-(`` (primitive.def .public Buffer
+(`` (nominal.def .public Buffer
(for @.old [Nat (-> java/lang/StringBuilder java/lang/StringBuilder)]
@.jvm [Nat (-> java/lang/StringBuilder java/lang/StringBuilder)]
@.js [Nat (-> (JS_Array Text) (JS_Array Text))]
diff --git a/stdlib/source/library/lux/data/text/encoding.lux b/stdlib/source/library/lux/data/text/encoding.lux
index c4247a851..6ff9aeec0 100644
--- a/stdlib/source/library/lux/data/text/encoding.lux
+++ b/stdlib/source/library/lux/data/text/encoding.lux
@@ -5,10 +5,10 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
... https://en.wikipedia.org/wiki/Character_encoding#Common_character_encodings
-(primitive.def .public Encoding
+(nominal.def .public Encoding
Text
(with_template [<name> <encoding>]
diff --git a/stdlib/source/library/lux/data/text/unicode/block.lux b/stdlib/source/library/lux/data/text/unicode/block.lux
index ea4fe8889..2ad6484b8 100644
--- a/stdlib/source/library/lux/data/text/unicode/block.lux
+++ b/stdlib/source/library/lux/data/text/unicode/block.lux
@@ -12,11 +12,11 @@
["[0]" i64]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[///
[char (.only Char)]])
-(primitive.def .public Block
+(nominal.def .public Block
(Interval Char)
(def .public monoid
diff --git a/stdlib/source/library/lux/data/text/unicode/set.lux b/stdlib/source/library/lux/data/text/unicode/set.lux
index 19ab0a416..67704b82e 100644
--- a/stdlib/source/library/lux/data/text/unicode/set.lux
+++ b/stdlib/source/library/lux/data/text/unicode/set.lux
@@ -11,7 +11,7 @@
["[1]" finger (.only Tree)]]]]
[meta
[type (.only by_example)
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[//
["[0]" block (.only Block)]
[//
@@ -27,7 +27,7 @@
@))
-(primitive.def .public Set
+(nominal.def .public Set
(Tree :@: Block [])
(def .public (composite left right)
diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux
index d132e6256..8be252760 100644
--- a/stdlib/source/library/lux/debug.lux
+++ b/stdlib/source/library/lux/debug.lux
@@ -82,7 +82,7 @@
@.python
(these (.type PyType
- (Primitive "python_type"))
+ (Nominal "python_type"))
(import (type [.Any] PyType))
(import (str [.Any] ffi.String)))
diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux
index e5f23e1ef..882726779 100644
--- a/stdlib/source/library/lux/documentation.lux
+++ b/stdlib/source/library/lux/documentation.lux
@@ -45,7 +45,7 @@
(def |recursion_dummy|
(template (_)
- [{.#Primitive "" {.#End}}]))
+ [{.#Nominal "" {.#End}}]))
(.type Fragment
(Variant
@@ -233,13 +233,13 @@
(-> Nat Text Bit Text Type
Text)
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(|> params
(list#each (|>> (%type' level type_function_name false module)
(format " ")))
{.#Item (%.text name)}
text.together
- (text.enclosed ["(Primitive " ")"]))
+ (text.enclosed ["(Nominal " ")"]))
{.#Sum _}
(|> type
@@ -339,13 +339,13 @@
_
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(when params
{.#End}
- (format "(Primitive " (%.text name) ")")
+ (format "(Nominal " (%.text name) ")")
_
- (format "(Primitive " (%.text name) " " (|> params (list#each (type_definition' false level arity type_function_info {.#None} module)) (text.interposed " ")) ")"))
+ (format "(Nominal " (%.text name) " " (|> params (list#each (type_definition' false level arity type_function_info {.#None} module)) (text.interposed " ")) ")"))
{.#Sum _}
(let [members (type.flat_variant type)]
@@ -503,7 +503,10 @@
(macro.with_symbols [g!type]
(in (list (` (all md.then
... Name
- (<| (md.heading/3)
+ (<| md.heading/4
+ (md.and (md.anchor (, (let [[module short] name]
+ (code.text (format module ":" short))))))
+ md.text
(, (code.text (%.code (let [g!name (|> name product.right code.local)]
(when parameters
{.#End}
@@ -603,12 +606,16 @@
..#documentation (,* documentation)]}))]
((, g!_) []))))))))))
+(def (definition#< left right)
+ (-> Definition Definition
+ Bit)
+ (text#< (symbol.short (the #global right))
+ (symbol.short (the #global left))))
+
(def definitions_documentation
(-> (List Definition)
(Markdown Block))
- (|>> (list.sorted (function (_ left right)
- (text#< (symbol.short (the #global right))
- (symbol.short (the #global left)))))
+ (|>> (list.sorted ..definition#<)
(list#each (the #documentation))
(list#mix md.then md.empty)))
@@ -657,12 +664,13 @@
(if (set.empty? it)
md.empty
(all md.then
- (md.heading/2 heading)
+ (md.heading/3 (md.text heading))
(|> (set.list it)
(list.only (|>> (text#= descriptor.runtime) not))
(list.sorted text#<)
(list#each (function (_ it)
- [(md.text it) {.#None}]))
+ [(md.link (md.text it) (%.format "#" it))
+ {.#None}]))
md.bullet_list)
)))
@@ -673,7 +681,8 @@
(let [(open "_[0]") module]
(all md.then
... Name
- (md.heading/1 (the #module module))
+ (md.heading/2 (md.and (md.anchor (the #module module))
+ (md.text (the #module module))))
... Description
(when (the #description module)
@@ -686,7 +695,7 @@
(dependencies "Dependers" (|> (dictionary.value (the #module module) dependers)
(maybe.else (set.empty text.hash))))
- (md.heading/2 "Definitions")
+ (md.heading/3 (md.text "Definitions"))
(|> definitions
(list.only (|>> (the #global)
symbol.short
@@ -704,7 +713,7 @@
missing
(all md.then
- (md.heading/2 "Missing documentation")
+ (md.heading/3 (md.text "Missing documentation"))
(..listing missing)))
... Un-expected documentation
@@ -720,7 +729,7 @@
un_expected
(all md.then
- (md.heading/2 "Un-expected documentation")
+ (md.heading/3 (md.text "Un-expected documentation"))
(..listing un_expected)))
)))
@@ -735,6 +744,25 @@
(set.list (the #dependees module))))
(dictionary.empty text.hash)))
+(def index
+ (-> (List [Module (List Definition)])
+ (Markdown Block))
+ (|>> (list#each (function (_ [module defs])
+ (all md.then
+ (md.heading/5 (let [it (the #module module)]
+ (md.link (md.text it) (%.format "#" it))))
+ (|> defs
+ (list.sorted ..definition#<)
+ (list#each (function (_ it)
+ (let [[module short] (the #global it)]
+ [(md.link (md.text short) (%.format "#" module ":" short))
+ {.#None}])))
+ md.bullet_list)
+ )))
+ (list#mix (function (_ right left)
+ (md.then left right))
+ (md.heading/1 (md.text "Index")))))
+
(def .public (markdown it)
(-> (List Documentation)
Text)
@@ -759,13 +787,18 @@
dictionary.entries
(list#each (function (_ [name [module definitons]])
[name module]))
- ..dependers)]
- (|> with_definitions
- dictionary.values
- (list.sorted (function (_ left right)
- (text#< (the #module (product.left right))
- (the #module (product.left left)))))
- (list#each (..module_documentation dependers))
- (list.interposed md.horizontal_rule)
- (list#mix md.then (is (Markdown Block) md.empty))
- md.markdown)))
+ ..dependers)
+ it (|> with_definitions
+ dictionary.values
+ (list.sorted (function (_ left right)
+ (text#< (the #module (product.left right))
+ (the #module (product.left left))))))]
+ (md.markdown
+ (all md.then
+ (index it)
+ (md.heading/1 (md.text "Documentation"))
+ (|> it
+ (list#each (..module_documentation dependers))
+ (list.interposed md.horizontal_rule)
+ (list#mix md.then (is (Markdown Block) md.empty)))
+ ))))
diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux
index 551afd5c0..5684fb32a 100644
--- a/stdlib/source/library/lux/ffi.jvm.lux
+++ b/stdlib/source/library/lux/ffi.jvm.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive Type Declaration Double int char is as type)
+ [lux (.except Type Declaration Double int char is as type)
[abstract
["[0]" monad (.only do)]]
[control
@@ -61,7 +61,7 @@
(with_template [<name> <class>]
[(`` (def .public <name>
.Type
- {.#Primitive <class> {.#End}}))]
+ {.#Nominal <class> {.#End}}))]
[Boolean box.boolean]
[Byte box.byte]
@@ -77,7 +77,7 @@
(with_template [<name> <class>]
[(`` (def .public <name>
.Type
- {.#Primitive (reflection.reflection <class>) {.#End}}))]
+ {.#Nominal (reflection.reflection <class>) {.#End}}))]
... Primitives
[boolean reflection.boolean]
@@ -118,9 +118,9 @@
(-> (Type Value) Text Code Code)
(let [unboxed (..reflection unboxed)]
(` (|> (, raw)
- (.is (.Primitive (, (code.text <pre>))))
+ (.is (.Nominal (, (code.text <pre>))))
.jvm_object_cast#
- (.is (.Primitive (, (code.text <post>))))))))]
+ (.is (.Nominal (, (code.text <post>))))))))]
[unbox boxed unboxed]
[box unboxed boxed]
@@ -212,7 +212,7 @@
{#Interface}))
(.type StackFrame
- (.Primitive "java/lang/StackTraceElement"))
+ (.Nominal "java/lang/StackTraceElement"))
(.type StackTrace
(array.Array StackFrame))
@@ -379,12 +379,12 @@
[parser.lower? _ (` .Any)]
[parser.upper? limit (parameter_type value_type limit)]
[parser.class? [name parameters]
- (` (.Primitive (, (code.text name))
- [(,* (list#each (parameter_type value_type) parameters))]))]
+ (` (.Nominal (, (code.text name))
+ [(,* (list#each (parameter_type value_type) parameters))]))]
[parser.array? elementT
(when (parser.primitive? elementT)
{.#Some elementT}
- (` {.#Primitive (, (code.text (..reflection (jvm.array elementT)))) {.#End}})
+ (` {.#Nominal (, (code.text (..reflection (jvm.array elementT)))) {.#End}})
{.#None}
(` (array.Array (, (value_type elementT)))))]))
@@ -1411,7 +1411,7 @@
(in (list (` (.jvm_object_null#))))))
(def .public (null? obj)
- (-> (.Primitive "java.lang.Object") Bit)
+ (-> (.Nominal "java.lang.Object") Bit)
(.jvm_object_null?# obj))
(def .public ???
@@ -1437,7 +1437,7 @@
unchecked (<>.maybe <code>.any)])
(with_symbols [g!_ g!unchecked]
(let [class_name (..reflection class)
- class_type (` (.Primitive (, (code.text class_name))))
+ class_type (` (.Nominal (, (code.text class_name))))
check_type (` (.Maybe (, class_type)))
check_code (` (if (.jvm_object_instance?# (, (code.text class_name)) (, g!unchecked))
{.#Some (.as (, class_type)
@@ -1450,7 +1450,7 @@
(, check_code))))))
{.#None}
- (in (list (` (.is (-> (.Primitive "java.lang.Object") (, check_type))
+ (in (list (` (.is (-> (.Nominal "java.lang.Object") (, check_type))
(function ((, g!_) (, g!unchecked))
(, check_code))))))
)))))
@@ -1477,8 +1477,8 @@
(` (def (, (code.symbol ["" def_name]))
.Type
(All ((, (' g!_)) (,* params'))
- (.Primitive (, (code.text full_name))
- [(,* params')])))))))
+ (.Nominal (, (code.text full_name))
+ [(,* params')])))))))
(def (member_type_vars class_tvars member)
(-> (List (Type Var)) Import_Member_Declaration (List (Type Var)))
@@ -1536,7 +1536,7 @@
... else
(let [g!temp (` ((,' ,') (, (code.symbol ["" " Ω "]))))]
(` (let [(, g!temp) (, return_term)]
- (if (not (..null? (.as (.Primitive "java.lang.Object")
+ (if (not (..null? (.as (.Nominal "java.lang.Object")
(, g!temp))))
(, g!temp)
(panic! "Cannot produce null references from method calls."))))))
@@ -1599,23 +1599,23 @@
(` (.|> (, unboxed/boxed) (,* post))))))]
[#1 with_automatic_input_conversion ..unbox
- [[jvm.boolean (list (` (.as (.Primitive (, (code.text box.boolean)))))) []]
- [jvm.byte (list (` (.as (.Primitive (, (code.text box.byte)))))) []]
- [jvm.short (list (` (.as (.Primitive (, (code.text box.short)))))) []]
- [jvm.int (list (` (.is (.Primitive (, (code.text box.int)))))) []]
- [jvm.long (list (` (.as (.Primitive (, (code.text box.long)))))) []]
- [jvm.char (list (` (.as (.Primitive (, (code.text box.char)))))) []]
- [jvm.float (list (` (.as (.Primitive (, (code.text box.float)))))) []]
- [jvm.double (list (` (.as (.Primitive (, (code.text box.double)))))) []]]]
+ [[jvm.boolean (list (` (.as (.Nominal (, (code.text box.boolean)))))) []]
+ [jvm.byte (list (` (.as (.Nominal (, (code.text box.byte)))))) []]
+ [jvm.short (list (` (.as (.Nominal (, (code.text box.short)))))) []]
+ [jvm.int (list (` (.is (.Nominal (, (code.text box.int)))))) []]
+ [jvm.long (list (` (.as (.Nominal (, (code.text box.long)))))) []]
+ [jvm.char (list (` (.as (.Nominal (, (code.text box.char)))))) []]
+ [jvm.float (list (` (.as (.Nominal (, (code.text box.float)))))) []]
+ [jvm.double (list (` (.as (.Nominal (, (code.text box.double)))))) []]]]
[#0 with_automatic_output_conversion ..box
- [[jvm.boolean (list) [(` (.is (.Primitive (, (code.text box.boolean)))))]]
- [jvm.byte (list) [(` (.is (.Primitive (, (code.text box.byte)))))]]
- [jvm.short (list) [(` (.is (.Primitive (, (code.text box.short)))))]]
- [jvm.int (list) [(` (.is (.Primitive (, (code.text box.int)))))]]
- [jvm.long (list) [(` (.is (.Primitive (, (code.text box.long)))))]]
- [jvm.char (list) [(` (.is (.Primitive (, (code.text box.char)))))]]
- [jvm.float (list) [(` (.is (.Primitive (, (code.text box.float)))))]]
- [jvm.double (list) [(` (.is (.Primitive (, (code.text box.double)))))]]]]
+ [[jvm.boolean (list) [(` (.is (.Nominal (, (code.text box.boolean)))))]]
+ [jvm.byte (list) [(` (.is (.Nominal (, (code.text box.byte)))))]]
+ [jvm.short (list) [(` (.is (.Nominal (, (code.text box.short)))))]]
+ [jvm.int (list) [(` (.is (.Nominal (, (code.text box.int)))))]]
+ [jvm.long (list) [(` (.is (.Nominal (, (code.text box.long)))))]]
+ [jvm.char (list) [(` (.is (.Nominal (, (code.text box.char)))))]]
+ [jvm.float (list) [(` (.is (.Nominal (, (code.text box.float)))))]]
+ [jvm.double (list) [(` (.is (.Nominal (, (code.text box.double)))))]]]]
)
(def (un_quoted quoted)
@@ -1628,7 +1628,7 @@
(list.zipped_2 classes)
(list#each (function (_ [class [maybe? input]])
(|> (if maybe?
- (` (.is (.Primitive (, (code.text (..reflection class))))
+ (` (.is (.Nominal (, (code.text (..reflection class))))
(!!! (, (..un_quoted input)))))
(..un_quoted input))
[class]
@@ -1662,12 +1662,12 @@
[.let [enum_type (.is Code
(when class_tvars
{.#End}
- (` (.Primitive (, (code.text full_name))))
+ (` (.Nominal (, (code.text full_name))))
_
(let [=class_tvars (list#each ..var$' class_tvars)]
(` (All ((, g!_) (,* =class_tvars))
- (.Primitive (, (code.text full_name)) [(,* =class_tvars)]))))))
+ (.Nominal (, (code.text full_name)) [(,* =class_tvars)]))))))
getter_interop (.is (-> Text Code)
(function (_ name)
(let [getter_name (code.symbol ["" (..import_name import_format method_prefix name)])]
@@ -1817,15 +1817,15 @@
(member_def_interop vars kind class =args member method_prefix import_format))))
(def interface?
- (All (_ a) (-> (.Primitive "java.lang.Class" [a]) Bit))
+ (All (_ a) (-> (.Nominal "java.lang.Class" [a]) Bit))
(|>> (.jvm_member_invoke_virtual# [] "java.lang.Class" "isInterface" [])
.jvm_object_cast#
(.is ..Boolean)
(.as Bit)))
(def load_class
- (-> External (Try (.Primitive "java.lang.Class" [Any])))
- (|>> (.as (.Primitive "java.lang.String"))
+ (-> External (Try (.Nominal "java.lang.Class" [Any])))
+ (|>> (.as (.Nominal "java.lang.String"))
["Ljava/lang/String;"]
(.jvm_member_invoke_static# [] "java.lang.Class" "forName" [])
try))
@@ -1859,7 +1859,7 @@
size <code>.any])
(let [g!size (` (|> (, size)
(.is .Nat)
- (.as (.Primitive (, (code.text box.long))))
+ (.as (.Nominal (, (code.text box.long))))
.jvm_object_cast#
.jvm_conversion_long_to_int#))]
(`` (cond (,, (with_template [<primitive> <array_op>]
@@ -1890,7 +1890,7 @@
(if (type#= .Any type)
(at meta.monad in $Object)
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(`` (cond (,, (with_template [<type>]
[(text#= (..reflection <type>) name)
(when params
@@ -1927,7 +1927,7 @@
[jvm.double]
[jvm.char]))
- (text#= array.primitive name)
+ (text#= array.nominal name)
(when params
{.#Item {.#Apply writeLT {.#Apply readLT _Mutable}} {.#End}}
(at meta.monad each jvm.array
@@ -1941,7 +1941,7 @@
{.#End}
(let [[_ unprefixed] (maybe.trusted (text.split_by descriptor.array_prefix name))]
(at meta.monad each jvm.array
- (lux_type->jvm_type context {.#Primitive unprefixed (list)})))
+ (lux_type->jvm_type context {.#Nominal unprefixed (list)})))
_
<failure>)
@@ -2011,7 +2011,7 @@
(in (list (` (.|> ((, g!extension) (, array))
.jvm_conversion_int_to_long#
.jvm_object_cast#
- (.is (.Primitive (, (code.text box.long))))
+ (.is (.Nominal (, (code.text box.long))))
(.as .Nat))))))
_
@@ -2030,7 +2030,7 @@
array_jvm_type (lux_type->jvm_type context array_type)
.let [g!idx (` (.|> (, idx)
(.is .Nat)
- (.as (.Primitive (, (code.text box.long))))
+ (.as (.Nominal (, (code.text box.long))))
.jvm_object_cast#
.jvm_conversion_long_to_int#))]]
(`` (cond (,, (with_template [<primitive> <extension> <box>]
@@ -2039,7 +2039,7 @@
array_jvm_type)
(in (list (` (.|> (<extension> (, g!idx) (, array))
.jvm_object_cast#
- (.is (.Primitive (, (code.text <box>))))))))]
+ (.is (.Nominal (, (code.text <box>))))))))]
[jvm.boolean .jvm_array_read_boolean# box.boolean]
[jvm.byte .jvm_array_read_byte# box.byte]
@@ -2070,7 +2070,7 @@
array_jvm_type (lux_type->jvm_type context array_type)
.let [g!idx (` (.|> (, idx)
(.is .Nat)
- (.as (.Primitive (, (code.text box.long))))
+ (.as (.Nominal (, (code.text box.long))))
.jvm_object_cast#
.jvm_conversion_long_to_int#))]]
(`` (cond (,, (with_template [<primitive> <extension> <box>]
@@ -2078,7 +2078,7 @@
(jvm.array <primitive>)
array_jvm_type)
(let [g!value (` (.|> (, value)
- (.as (.Primitive (, (code.text <box>))))
+ (.as (.Nominal (, (code.text <box>))))
.jvm_object_cast#))]
(in (list (` (<extension> (, g!idx) (, g!value) (, array))))))]
diff --git a/stdlib/source/library/lux/ffi.lux b/stdlib/source/library/lux/ffi.lux
index e4d0878a5..fee15e46d 100644
--- a/stdlib/source/library/lux/ffi.lux
+++ b/stdlib/source/library/lux/ffi.lux
@@ -21,7 +21,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except #name def)]]
+ ["[0]" nominal (.except #name def)]]
["@" target (.only)
["[0]" js]]]]])
@@ -217,7 +217,7 @@
@.python .python_function#
@.lua "lua function"
(these))]
- (primitive.def .public (Object brand) Any)
+ (nominal.def .public (Object brand) Any)
(with_expansions [<un_common> (for @.js (these [Symbol]
[Null]
@@ -230,7 +230,7 @@
<un_common> <un_common>]
(with_template [<name>]
[(with_expansions [<brand> (template.symbol [<name> "'"])]
- (primitive.def <brand>
+ (nominal.def <brand>
Any
(type .public <name>
@@ -792,8 +792,8 @@
declaration (` ((, (code.local (maybe.else class_name alias)))
(,* g!class_variables)))]
(in (list.partial (` (.type (, declaration)
- (..Object (.Primitive (, (code.text (..host_path class_name)))
- [(,* g!class_variables)]))))
+ (..Object (.Nominal (, (code.text (..host_path class_name)))
+ [(,* g!class_variables)]))))
(list#each (.function (_ member)
(`` (`` (when member
(,, (for @.lua (,, (these))
diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux
index d1922147b..ad7072f9c 100644
--- a/stdlib/source/library/lux/ffi.old.lux
+++ b/stdlib/source/library/lux/ffi.old.lux
@@ -29,7 +29,7 @@
(with_template [<name> <op> <from> <to>]
[(def .public (<name> value)
- (-> (Primitive <from>) (Primitive <to>))
+ (-> (Nominal <from>) (Nominal <to>))
(<op> value))]
[byte_to_long "jvm convert byte-to-long" "java.lang.Byte" "java.lang.Long"]
@@ -66,11 +66,11 @@
(with_template [<forward> <from> <to> <backward>]
[(def .public <forward>
(template (<forward> it)
- [(|> it (.is <from>) (.as (Primitive <to>)))]))
+ [(|> it (.is <from>) (.as (Nominal <to>)))]))
(def .public <backward>
(template (<backward> it)
- [(|> it (.is (Primitive <to>)) (.as <from>))]))]
+ [(|> it (.is (Nominal <to>)) (.as <from>))]))]
[as_boolean .Bit "java.lang.Boolean" of_boolean]
[as_long .Int "java.lang.Long" of_long]
@@ -81,11 +81,11 @@
(with_template [<forward> <from> <$> <mid> <$'> <to> <backward>]
[(def .public <forward>
(template (<forward> it)
- [(|> it (.is <from>) (.as (Primitive <mid>)) <$> (.is (Primitive <to>)))]))
+ [(|> it (.is <from>) (.as (Nominal <mid>)) <$> (.is (Nominal <to>)))]))
(def .public <backward>
(template (<backward> it)
- [(|> it (.is (Primitive <to>)) <$'> (.is (Primitive <mid>)) (.as <from>))]))]
+ [(|> it (.is (Nominal <to>)) <$'> (.is (Nominal <mid>)) (.as <from>))]))]
[as_byte .Int ..long_to_byte "java.lang.Long" ..byte_to_long "java.lang.Byte" of_byte]
[as_short .Int ..long_to_short "java.lang.Long" ..short_to_long "java.lang.Short" of_short]
@@ -152,7 +152,7 @@
#class_params (List Type_Parameter)]))
(.type StackFrame
- (Primitive "java/lang/StackTraceElement"))
+ (Nominal "java/lang/StackTraceElement"))
(.type StackTrace
(Array StackFrame))
@@ -288,14 +288,14 @@
(^.with_template [<prim> <type>]
[<prim>
{.#Some (' <type>)}])
- (["boolean" (Primitive "java.lang.Boolean")]
- ["byte" (Primitive "java.lang.Byte")]
- ["short" (Primitive "java.lang.Short")]
- ["int" (Primitive "java.lang.Integer")]
- ["long" (Primitive "java.lang.Long")]
- ["float" (Primitive "java.lang.Float")]
- ["double" (Primitive "java.lang.Double")]
- ["char" (Primitive "java.lang.Character")]
+ (["boolean" (Nominal "java.lang.Boolean")]
+ ["byte" (Nominal "java.lang.Byte")]
+ ["short" (Nominal "java.lang.Short")]
+ ["int" (Nominal "java.lang.Integer")]
+ ["long" (Nominal "java.lang.Long")]
+ ["float" (Nominal "java.lang.Float")]
+ ["double" (Nominal "java.lang.Double")]
+ ["char" (Nominal "java.lang.Character")]
["void" .Any])
_
@@ -342,7 +342,7 @@
[[name params] _ _]
(let [name (safe name)
=params (list#each (class_type' mode type_params in_array?) params)]
- (` (Primitive (, (code.text name)) [(,* =params)])))))
+ (` (Nominal (, (code.text name)) [(,* =params)])))))
(def (class_type' mode type_params in_array? class)
(-> Primitive_Mode (List Type_Parameter) Bit GenericType Code)
@@ -393,8 +393,8 @@
{.#Item bound1 _}
(class_type {#ManualPrM} #class_params bound1))))
#class_params)]
- (` (Primitive (, (code.text (safe #class_name)))
- [(,* =params)]))))
+ (` (Nominal (, (code.text (safe #class_name)))
+ [(,* =params)]))))
(def type_var_class Text "java.lang.Object")
@@ -1025,7 +1025,7 @@
(format "(" (safe name) " " (spaced (list#each generic_type$ params)) ")")
{#GenericArray param}
- (format "(" array.primitive " " (generic_type$ param) ")")
+ (format "(" array.nominal " " (generic_type$ param) ")")
{#GenericWildcard {.#None}}
"?"
@@ -1266,7 +1266,7 @@
(in (list (` ("jvm object null"))))))
(def .public (null? obj)
- (-> (Primitive "java.lang.Object") Bit)
+ (-> (Nominal "java.lang.Object") Bit)
("jvm object null?" obj))
(def .public ???
@@ -1292,7 +1292,7 @@
unchecked (<>.maybe <code>.any)])
(with_symbols [g!_ g!unchecked]
(let [class_name (simple_class$ (list) class)
- class_type (` (.Primitive (, (code.text class_name))))
+ class_type (` (.Nominal (, (code.text class_name))))
check_type (` (.Maybe (, class_type)))
check_code (` (if ((, (code.text (format "jvm instanceof" ":" class_name))) (, g!unchecked))
{.#Some (.as (, class_type)
@@ -1305,7 +1305,7 @@
(, check_code))))))
{.#None}
- (in (list (` (.is (-> (Primitive "java.lang.Object") (, check_type))
+ (in (list (` (.is (-> (Nominal "java.lang.Object") (, check_type))
(function ((, g!_) (, g!unchecked))
(, check_code))))))
)))))
@@ -1330,8 +1330,8 @@
(` (def (, (code.symbol ["" full_name]))
Type
(All ((, (' g!_)) (,* params'))
- (Primitive (, (code.text (safe full_name)))
- [(,* params')])))))))
+ (Nominal (, (code.text (safe full_name)))
+ [(,* params')])))))))
(def (member_type_vars class_tvars member)
(-> (List Type_Parameter) Import_Member_Declaration (List Type_Parameter))
@@ -1385,7 +1385,7 @@
(` (??? (, return_term)))
(let [g!temp (` ((,' ,') (, (code.symbol ["" " Ω "]))))]
(` (let [(, g!temp) (, return_term)]
- (if (not (..null? (.as (Primitive "java.lang.Object")
+ (if (not (..null? (.as (Nominal "java.lang.Object")
(, g!temp))))
(, g!temp)
(panic! (, (code.text (format "Cannot produce null references from method calls @ "
@@ -1478,13 +1478,13 @@
[.let [enum_type (.is Code
(when class_tvars
{.#End}
- (` (Primitive (, (code.text full_name))))
+ (` (Nominal (, (code.text full_name))))
_
(let [=class_tvars (|> class_tvars
(list.only free_type_param?)
(list#each lux_type_parameter))]
- (` (All ((, g!_) (,* =class_tvars)) (Primitive (, (code.text full_name)) [(,* =class_tvars)]))))))
+ (` (All ((, g!_) (,* =class_tvars)) (Nominal (, (code.text full_name)) [(,* =class_tvars)]))))))
getter_interop (.is (-> Text Code)
(function (_ name)
(let [getter_name (code.symbol ["" (..import_name import_format method_prefix name)])]
@@ -1608,7 +1608,7 @@
(member_def_interop type_params kind class =args member method_prefix import_format))))
(.type (java/lang/Class a)
- (Primitive "java.lang.Class" [a]))
+ (Nominal "java.lang.Class" [a]))
(def interface?
(All (_ a) (-> (java/lang/Class a) Bit))
@@ -1670,7 +1670,7 @@
(if (type#= Any type)
(at meta.monad in "java.lang.Object")
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(at meta.monad in name)
{.#Apply A F}
diff --git a/stdlib/source/library/lux/ffi.php.lux b/stdlib/source/library/lux/ffi.php.lux
index 4f31625f0..857633539 100644
--- a/stdlib/source/library/lux/ffi.php.lux
+++ b/stdlib/source/library/lux/ffi.php.lux
@@ -16,18 +16,18 @@
["[0]" meta (.only)
["@" target]
[type
- ["[0]" primitive (.except def)]]
+ ["[0]" nominal (.except def)]]
["[0]" code (.only)
["<[1]>" \\parser (.only Parser)]]
[macro (.only with_symbols)
[syntax (.only syntax)]
["[0]" template]]]]])
-(primitive.def .public (Object brand) Any)
+(nominal.def .public (Object brand) Any)
(with_template [<name>]
[(with_expansions [<brand> (template.symbol [<name> "'"])]
- (primitive.def .public <brand> Any)
+ (nominal.def .public <brand> Any)
(type .public <name>
(..Object <brand>)))]
@@ -242,7 +242,7 @@
g!type (code.local (maybe.else class alias))
class_import (` ("php constant" (, (code.text class))))]
(in (list.partial (` (type (, g!type)
- (..Object (Primitive (, (code.text class))))))
+ (..Object (Nominal (, (code.text class))))))
(list#each (function (_ member)
(when member
{#Field [static? field alias fieldT]}
diff --git a/stdlib/source/library/lux/ffi.scm.lux b/stdlib/source/library/lux/ffi.scm.lux
index b7169f1e4..92184bb5a 100644
--- a/stdlib/source/library/lux/ffi.scm.lux
+++ b/stdlib/source/library/lux/ffi.scm.lux
@@ -16,18 +16,18 @@
["[0]" meta (.only)
["@" target]
[type
- ["[0]" primitive (.except def)]]
+ ["[0]" nominal (.except def)]]
["[0]" code (.only)
["<[1]>" \\parser (.only Parser)]]
[macro (.only with_symbols)
[syntax (.only syntax)]
["[0]" template]]]]])
-(primitive.def .public (Object brand) Any)
+(nominal.def .public (Object brand) Any)
(with_template [<name>]
[(with_expansions [<brand> (template.symbol [<name> "'"])]
- (primitive.def .public <brand> Any)
+ (nominal.def .public <brand> Any)
(type .public <name>
(..Object <brand>)))]
diff --git a/stdlib/source/library/lux/math/modular.lux b/stdlib/source/library/lux/math/modular.lux
index 6f66a7e79..e037e5c8c 100644
--- a/stdlib/source/library/lux/math/modular.lux
+++ b/stdlib/source/library/lux/math/modular.lux
@@ -22,11 +22,11 @@
["[0]" code (.only)
["<[1]>" \\parser]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1]" modulus (.only Modulus)]])
-(primitive.def .public (Mod m)
+(nominal.def .public (Mod m)
(Record
[#modulus (Modulus m)
#value Int])
diff --git a/stdlib/source/library/lux/math/modulus.lux b/stdlib/source/library/lux/math/modulus.lux
index ed7e5eb59..ec9254d5c 100644
--- a/stdlib/source/library/lux/math/modulus.lux
+++ b/stdlib/source/library/lux/math/modulus.lux
@@ -15,11 +15,11 @@
[macro
[syntax (.only syntax)]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(exception.def .public zero_cannot_be_a_modulus)
-(primitive.def .public (Modulus %)
+(nominal.def .public (Modulus %)
Int
(def .public (modulus value)
diff --git a/stdlib/source/library/lux/math/number/frac.lux b/stdlib/source/library/lux/math/number/frac.lux
index 916fa95f7..afa38b160 100644
--- a/stdlib/source/library/lux/math/number/frac.lux
+++ b/stdlib/source/library/lux/math/number/frac.lux
@@ -65,14 +65,14 @@
(these (def !double
(template (_ value)
[(|> value
- (as (Primitive "java.lang.Double"))
+ (as (Nominal "java.lang.Double"))
.jvm_object_cast#)]))
(def !frac
(template (_ value)
[(|> value
.jvm_object_cast#
- (is (Primitive "java.lang.Double"))
+ (is (Nominal "java.lang.Double"))
(as Frac))]))
(with_template [<name> <method>]
diff --git a/stdlib/source/library/lux/math/number/i32.lux b/stdlib/source/library/lux/math/number/i32.lux
index 3d7acc842..af4d6d592 100644
--- a/stdlib/source/library/lux/math/number/i32.lux
+++ b/stdlib/source/library/lux/math/number/i32.lux
@@ -12,7 +12,7 @@
(def sub
... TODO: Stop needing this coercion.
- (as (Sub (I64 (Primitive "#I32")))
+ (as (Sub (I64 (Nominal "#I32")))
(maybe.trusted (i64.sub 32))))
(def .public I32
diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux
index fc31b8659..8c51327ee 100644
--- a/stdlib/source/library/lux/meta.lux
+++ b/stdlib/source/library/lux/meta.lux
@@ -142,7 +142,7 @@
(-> Type Bit)
(when type
{.#Named [.prelude "Macro"]
- {.#Primitive "#Macro" {.#End}}}
+ {.#Nominal "#Macro" {.#End}}}
true
_
diff --git a/stdlib/source/library/lux/meta/compiler/default/platform.lux b/stdlib/source/library/lux/meta/compiler/default/platform.lux
index 0f95c121a..4dad1b450 100644
--- a/stdlib/source/library/lux/meta/compiler/default/platform.lux
+++ b/stdlib/source/library/lux/meta/compiler/default/platform.lux
@@ -719,11 +719,11 @@
(for @.old (these (def Fake_State
Type
- {.#Primitive (%.nat (static.random_nat)) (list)})
+ {.#Nominal (%.nat (static.random_nat)) (list)})
(def Fake_Document
Type
- {.#Primitive (%.nat (static.random_nat)) (list)}))
+ {.#Nominal (%.nat (static.random_nat)) (list)}))
(these))
(def (serial_compiler import context platform compilation_sources configuration compiler)
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/analysis/inference.lux b/stdlib/source/library/lux/meta/compiler/language/lux/analysis/inference.lux
index cd36aa83f..db6182d7e 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/analysis/inference.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/analysis/inference.lux
@@ -58,8 +58,8 @@
(def .public (quantified @var @parameter :it:)
(-> check.Var Nat Type Type)
(when :it:
- {.#Primitive name co_variant}
- {.#Primitive name (list#each (quantified @var @parameter) co_variant)}
+ {.#Nominal name co_variant}
+ {.#Nominal name (list#each (quantified @var @parameter) co_variant)}
(^.with_template [<tag>]
[{<tag> left right}
@@ -194,7 +194,7 @@
(function (again it)
(when it
(^.or {.#Parameter index}
- {.#Apply {.#Primitive "" {.#End}}
+ {.#Apply {.#Nominal "" {.#End}}
{.#Parameter index}})
(if (n.= @self index)
recursion
@@ -211,8 +211,8 @@
(with_recursion (n.+ 2 @self) recursion quantified)}])
([.#UnivQ] [.#ExQ])
- {.#Primitive name parameters}
- {.#Primitive name (list#each again parameters)}
+ {.#Nominal name parameters}
+ {.#Nominal name (list#each again parameters)}
_
it)))
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/analysis/type.lux b/stdlib/source/library/lux/meta/compiler/language/lux/analysis/type.lux
index ddb530480..f14a75e91 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/analysis/type.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/analysis/type.lux
@@ -40,7 +40,7 @@
(def .public (existential? type)
(-> Type Bit)
(when type
- {.#Primitive actual {.#End}}
+ {.#Nominal actual {.#End}}
(text.starts_with? ..prefix actual)
_
@@ -48,7 +48,7 @@
(def (existential' module id)
(-> Text Nat Type)
- {.#Primitive (format ..prefix module "#" (%.nat id)) (list)})
+ {.#Nominal (format ..prefix module "#" (%.nat id)) (list)})
(def .public existential
(Operation Type)
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/analysis/jvm.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/analysis/jvm.lux
index 86f8c8a90..a9f5b9726 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/analysis/jvm.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/analysis/jvm.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Module Primitive Analysis Declaration Double #Default char int type)
+ [lux (.except Type Module Analysis Declaration Double #Default char int type)
["[0]" ffi (.only import)]
[abstract
["[0]" monad (.only do)]]
@@ -203,7 +203,7 @@
(with_template [<name> <class>]
[(def .public <name>
.Type
- {.#Primitive <class> {.#End}})]
+ {.#Nominal <class> {.#End}})]
... Boxes
[Boolean box.boolean]
@@ -385,7 +385,7 @@
(def lux_array_type
(template (_ :read: :write:)
- [{.#Primitive array.primitive (list {.#Apply :write: {.#Apply :read: _Mutable}})}]))
+ [{.#Nominal array.nominal (list {.#Apply :write: {.#Apply :read: _Mutable}})}]))
(def (jvm_type luxT)
(-> .Type (Operation (Type Value)))
@@ -404,7 +404,7 @@
(lux_array_type elemT _)
(phase#each jvm.array (jvm_type elemT))
- {.#Primitive class parametersT}
+ {.#Nominal class parametersT}
(when (dictionary.value class ..boxes)
{.#Some [_ primitive_type]}
(when parametersT
@@ -455,9 +455,9 @@
(function (_ extension_name analyse archive [arrayC])
(do phase.monad
[_ (typeA.inference ..int)
- arrayA (<| (typeA.expecting {.#Primitive (|> (jvm.array primitive_type)
- ..reflection)
- (list)})
+ arrayA (<| (typeA.expecting {.#Nominal (|> (jvm.array primitive_type)
+ ..reflection)
+ (list)})
(analyse archive arrayC))
@ meta.location]
(in [@ {/////analysis.#Extension [.prelude (%.format extension_name "|translation")]
@@ -492,8 +492,8 @@
(do phase.monad
[lengthA (<| (typeA.expecting ..int)
(analyse archive lengthC))
- _ (typeA.inference {.#Primitive (|> (jvm.array primitive_type) ..reflection)
- (list)})
+ _ (typeA.inference {.#Nominal (|> (jvm.array primitive_type) ..reflection)
+ (list)})
@ meta.location]
(in [@ {/////analysis.#Extension [.prelude (%.format extension_name "|translation")]
(list lengthA)}])))]))
@@ -525,7 +525,7 @@
(lux_array_type elementT _)
(/////analysis.except ..non_parameter objectT)
- {.#Primitive name parameters}
+ {.#Nominal name parameters}
(`` (cond (or (,, (with_template [<type>]
[(text#= (..reflection <type>) name)]
@@ -583,7 +583,7 @@
(def (check_jvm objectT)
(-> .Type (Operation (Type Value)))
(when objectT
- {.#Primitive name {.#End}}
+ {.#Nominal name {.#End}}
(`` (cond (,, (with_template [<type>]
[(text#= (..reflection <type>) name)
(phase#in <type>)]
@@ -613,7 +613,7 @@
(text.starts_with? descriptor.array_prefix name)
(let [[_ unprefixed] (maybe.trusted (text.split_by descriptor.array_prefix name))]
(at phase.monad each jvm.array
- (check_jvm {.#Primitive unprefixed (list)})))
+ (check_jvm {.#Nominal unprefixed (list)})))
... else
(phase#in (jvm.class name (list)))))
@@ -623,7 +623,7 @@
check_jvm
(phase#each jvm.array))
- {.#Primitive name parameters}
+ {.#Nominal name parameters}
(do [! phase.monad]
[parameters (monad.each ! check_parameter parameters)]
(phase#in (jvm.class name parameters)))
@@ -690,8 +690,8 @@
[_ (typeA.inference lux_type)
idxA (<| (typeA.expecting ..int)
(analyse archive idxC))
- arrayA (<| (typeA.expecting {.#Primitive (|> (jvm.array jvm_type) ..reflection)
- (list)})
+ arrayA (<| (typeA.expecting {.#Nominal (|> (jvm.array jvm_type) ..reflection)
+ (list)})
(analyse archive arrayC))
@ meta.location]
(in [@ {/////analysis.#Extension [.prelude (%.format extension_name "|translation")]
@@ -723,8 +723,8 @@
(def (write_primitive_array_handler lux_type jvm_type)
(-> .Type (Type Primitive) (-> Text Handler))
- (let [array_type {.#Primitive (|> (jvm.array jvm_type) ..reflection)
- (list)}]
+ (let [array_type {.#Nominal (|> (jvm.array jvm_type) ..reflection)
+ (list)}]
(..custom
[(all <>.and <code>.any <code>.any <code>.any)
(function (_ extension_name analyse archive [idxC valueC arrayC])
@@ -879,7 +879,7 @@
(function (_ extension_name analyse archive [class])
(do phase.monad
[_ (..ensure_fresh_class! class_loader class)
- _ (typeA.inference {.#Primitive "java.lang.Class" (list {.#Primitive class (list)})})
+ _ (typeA.inference {.#Nominal "java.lang.Class" (list {.#Nominal class (list)})})
_ (phase.of_try (reflection!.load class_loader class))
@ meta.location]
(in [@ {/////analysis.#Extension [.prelude (%.format extension_name "|translation")]
@@ -1276,7 +1276,7 @@
inputsT
_
- (list.partial {.#Primitive (java/lang/Class::getName owner) owner_tvarsT}
+ (list.partial {.#Nominal (java/lang/Class::getName owner) owner_tvarsT}
inputsT)))
outputT)]]
(in [methodT
@@ -1308,7 +1308,7 @@
(monad.each ! (|>> reflection!.type phase.of_try))
(phase#each (monad.each ! (reflection_type mapping)))
phase#conjoint)
- .let [objectT {.#Primitive (java/lang/Class::getName owner) owner_tvarsT}
+ .let [objectT {.#Nominal (java/lang/Class::getName owner) owner_tvarsT}
constructorT (<| (type.univ_q (dictionary.size mapping))
(type.function inputsT)
objectT)]]
@@ -2672,7 +2672,7 @@
[where meta.current_module_name
id meta.seed]
(in (..anonymous_class_name where id)))
- .let [selfT {.#Primitive self_name (list)}]
+ .let [selfT {.#Nominal self_name (list)}]
mock (<| phase.of_try
(..mock [self_name parameters]
super_class
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/jvm.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/jvm.lux
index bd02f425d..edb4a9d3d 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/jvm.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/jvm.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Definition Primitive Analysis Synthesis Declaration)
+ [lux (.except Type Definition Analysis Synthesis Declaration)
["[0]" ffi (.only import)]
[abstract
["[0]" monad (.only do)]]
@@ -893,7 +893,7 @@
(dictionary.has (parser.name parameterJ) parameterT mapping))
luxT.fresh
parameters)
- selfT {.#Primitive name (list#each product.right parameters)}]
+ selfT {.#Nominal name (list#each product.right parameters)}]
state phase.state
methods (monad.each ! (let [analysis_state (the [declaration.#analysis declaration.#state] state)]
(..method_definition archive super interfaces [mapping selfT]
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/lux.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/lux.lux
index c024f832a..99a99baa6 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/lux.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/declaration/lux.lux
@@ -315,7 +315,7 @@
{.#Named (symbol <original>)
<anonymous>})))]
- [Binary|Python (Primitive "bytearray")]
+ [Binary|Python (Nominal "bytearray")]
[Binary|DEFAULT (type_literal (array.Array (I64 Any)))]
)
@@ -325,8 +325,8 @@
(if (type#= original type)
replacement
(when type
- {.#Primitive name parameters}
- {.#Primitive name (list#each again parameters)}
+ {.#Nominal name parameters}
+ {.#Nominal name (list#each again parameters)}
(^.with_template [<tag>]
[{<tag> left right}
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/common.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/common.lux
index b7ddc07e9..b82acba31 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/common.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/common.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Label Primitive Synthesis)
+ [lux (.except Type Label Synthesis)
[abstract
["[0]" monad (.only do)]]
[control
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/host.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/host.lux
index 57d0c3bbc..1f019a985 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/host.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/extension/translation/jvm/host.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Primitive Synthesis)
+ [lux (.except Type Synthesis)
[abstract
["[0]" monad (.only do)]]
[control
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/translation/jvm/value.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/translation/jvm/value.lux
index 3d914a0e7..70adbaaf3 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/translation/jvm/value.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/translation/jvm/value.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Primitive)
+ [lux (.except Type)
[meta
[target
[jvm
diff --git a/stdlib/source/library/lux/meta/compiler/meta/archive.lux b/stdlib/source/library/lux/meta/compiler/meta/archive.lux
index ca3dd65b4..04187cdb3 100644
--- a/stdlib/source/library/lux/meta/compiler/meta/archive.lux
+++ b/stdlib/source/library/lux/meta/compiler/meta/archive.lux
@@ -28,7 +28,7 @@
[meta
["[0]" configuration (.only Configuration)]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[/
["[0]" artifact]
["[0]" registry (.only Registry)]
@@ -73,7 +73,7 @@
#output Output
#registry Registry]))
-(primitive.def .public Archive
+(nominal.def .public Archive
(Record
[#next module.ID
#resolver (Dictionary descriptor.Module [module.ID (Maybe (Entry Any))])])
diff --git a/stdlib/source/library/lux/meta/compiler/meta/archive/key.lux b/stdlib/source/library/lux/meta/compiler/meta/archive/key.lux
index 09a246977..f23c094b4 100644
--- a/stdlib/source/library/lux/meta/compiler/meta/archive/key.lux
+++ b/stdlib/source/library/lux/meta/compiler/meta/archive/key.lux
@@ -3,11 +3,11 @@
[lux (.except)
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[//
[signature (.only Signature)]])
-(primitive.def .public (Key k)
+(nominal.def .public (Key k)
Signature
(def .public signature
diff --git a/stdlib/source/library/lux/meta/compiler/meta/archive/module/document.lux b/stdlib/source/library/lux/meta/compiler/meta/archive/module/document.lux
index 8778ecd01..31e1ea00d 100644
--- a/stdlib/source/library/lux/meta/compiler/meta/archive/module/document.lux
+++ b/stdlib/source/library/lux/meta/compiler/meta/archive/module/document.lux
@@ -15,7 +15,7 @@
["[1]" \\format (.only Format)]]]
[meta
[type (.only sharing)
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[///
["[0]" signature (.only Signature) (.use "[1]#[0]" equivalence)]
["[0]" key (.only Key)]])
@@ -26,7 +26,7 @@
(list ["Expected" (signature.description expected)]
["Actual" (signature.description actual)])))
-(primitive.def .public (Document d)
+(nominal.def .public (Document d)
(Record
[#signature Signature
#content d])
diff --git a/stdlib/source/library/lux/meta/compiler/meta/archive/registry.lux b/stdlib/source/library/lux/meta/compiler/meta/archive/registry.lux
index ff6424658..3ca43494f 100644
--- a/stdlib/source/library/lux/meta/compiler/meta/archive/registry.lux
+++ b/stdlib/source/library/lux/meta/compiler/meta/archive/registry.lux
@@ -24,13 +24,13 @@
[macro
["^" pattern]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[0]" unit]
["[1]" artifact (.only Artifact ID)
["[2][0]" category (.only Category)]]])
-(primitive.def .public Registry
+(nominal.def .public Registry
(Record
[#artifacts (Sequence [Artifact (Set unit.ID)])
#resolver (Dictionary Text [ID (Maybe //category.Definition)])])
diff --git a/stdlib/source/library/lux/meta/macro/vocabulary.lux b/stdlib/source/library/lux/meta/macro/vocabulary.lux
index 71327712d..0b2216617 100644
--- a/stdlib/source/library/lux/meta/macro/vocabulary.lux
+++ b/stdlib/source/library/lux/meta/macro/vocabulary.lux
@@ -15,7 +15,7 @@
["[0]" code (.only)
["?[1]" \\parser (.only Parser)]]
["[0]" type (.only)
- ["[0]" primitive (.except def)]]]])
+ ["[0]" nominal (.except def)]]]])
(exception.def .public (invalid_type [expected actual])
(Exception [Type Type])
@@ -33,7 +33,7 @@
[public|private@macro macro] ..local
[public|private@by_name by_name] ..local])
(//.with_symbols [g!_ g!type g!value]
- (in (list (` (primitive.def (, public|private@type) (, type)
+ (in (list (` (nominal.def (, public|private@type) (, type)
Macro
(.def (, public|private@micro) (, micro)
diff --git a/stdlib/source/library/lux/meta/target/common_lisp.lux b/stdlib/source/library/lux/meta/target/common_lisp.lux
index 64af1340f..60f46f514 100644
--- a/stdlib/source/library/lux/meta/target/common_lisp.lux
+++ b/stdlib/source/library/lux/meta/target/common_lisp.lux
@@ -15,13 +15,13 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def as_form
(-> Text Text)
(text.enclosed ["(" ")"]))
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(def .public manual
@@ -34,7 +34,7 @@
(with_template [<type> <super>]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (`` (primitive.def .public (<brand> brand) Any))
+ (`` (nominal.def .public (<brand> brand) Any))
(`` (type .public (<type> brand)
(<super> (<brand> brand)))))]
@@ -48,7 +48,7 @@
(with_template [<type> <super>]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (`` (primitive.def .public <brand> Any))
+ (`` (nominal.def .public <brand> Any))
(`` (type .public <type> (<super> <brand>))))]
[Label Code]
diff --git a/stdlib/source/library/lux/meta/target/js.lux b/stdlib/source/library/lux/meta/target/js.lux
index 4460eb45b..b2e34c32b 100644
--- a/stdlib/source/library/lux/meta/target/js.lux
+++ b/stdlib/source/library/lux/meta/target/js.lux
@@ -16,7 +16,7 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def expression
(text.enclosed ["(" ")"]))
@@ -34,7 +34,7 @@
(|>> (format \n+)
(text.replaced text.new_line (format text.new_line text.tab))))
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(def .public code
@@ -43,7 +43,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def (<brand> brand) Any)
+ (nominal.def (<brand> brand) Any)
(`` (type .public <type> (|> Any <brand> (,, (template.spliced <super>+))))))]
[Expression [Code]]
@@ -54,7 +54,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def <brand> Any)
+ (nominal.def <brand> Any)
(`` (type .public <type> (|> <brand> (,, (template.spliced <super>+))))))]
[Var [Location' Computation' Expression' Code]]
diff --git a/stdlib/source/library/lux/meta/target/jvm/bytecode/address.lux b/stdlib/source/library/lux/meta/target/jvm/bytecode/address.lux
index 92dac219f..3e6d4f4c2 100644
--- a/stdlib/source/library/lux/meta/target/jvm/bytecode/address.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/bytecode/address.lux
@@ -16,7 +16,7 @@
["n" nat]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[jump (.only Big_Jump)]
["/[1]" //
@@ -24,7 +24,7 @@
["[1][0]" unsigned (.only U2)]
["[1][0]" signed (.only S4)]]]])
-(primitive.def .public Address
+(nominal.def .public Address
U2
(def .public value
diff --git a/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/registry.lux b/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/registry.lux
index a4064ce18..28c09c0d2 100644
--- a/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/registry.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/registry.lux
@@ -15,7 +15,7 @@
["n" nat]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" /////
[encoding
["[1][0]" unsigned (.only U1 U2)]]
@@ -29,7 +29,7 @@
(def normal 1)
(def wide 2)
-(primitive.def .public Registry
+(nominal.def .public Registry
U2
(def .public registry
diff --git a/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/stack.lux b/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/stack.lux
index 5ea838b14..eaf7673f7 100644
--- a/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/stack.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/bytecode/environment/limit/stack.lux
@@ -13,12 +13,12 @@
[\\format (.only Format)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" /////
[encoding
["[1][0]" unsigned (.only U2)]]])
-(primitive.def .public Stack
+(nominal.def .public Stack
U2
(with_template [<frames> <name>]
diff --git a/stdlib/source/library/lux/meta/target/jvm/bytecode/instruction.lux b/stdlib/source/library/lux/meta/target/jvm/bytecode/instruction.lux
index 16bc84c5e..d6abb8141 100644
--- a/stdlib/source/library/lux/meta/target/jvm/bytecode/instruction.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/bytecode/instruction.lux
@@ -23,7 +23,7 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1][0]" address (.only Address)]
["[1][0]" jump (.only Jump Big_Jump)]
@@ -222,7 +222,7 @@
[(n.+ (///unsigned.value ..size/211) size)
(|>> mutation ((trinary/211' opcode input0 input1 input2)))])])
-(primitive.def .public Primitive_Array_Type
+(nominal.def .public Primitive_Array_Type
U1
(def code
diff --git a/stdlib/source/library/lux/meta/target/jvm/constant.lux b/stdlib/source/library/lux/meta/target/jvm/constant.lux
index b3fbb5cef..936e73230 100644
--- a/stdlib/source/library/lux/meta/target/jvm/constant.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/constant.lux
@@ -23,7 +23,7 @@
["^" pattern]
["[0]" template]]
[type
- ["[0]" primitive (.except def #name)]]]]]
+ ["[0]" nominal (.except def #name)]]]]]
["[0]" /
["[1][0]" tag]
["/[1]" //
@@ -41,7 +41,7 @@
(Format UTF8)
binaryF.utf8_16)
-(primitive.def .public Class
+(nominal.def .public Class
(Index UTF8)
(def .public index
@@ -82,7 +82,7 @@
"[1]::[0]"
("static" doubleToRawLongBits [double] long))
-(primitive.def .public (Value kind)
+(nominal.def .public (Value kind)
kind
(def .public value
diff --git a/stdlib/source/library/lux/meta/target/jvm/constant/tag.lux b/stdlib/source/library/lux/meta/target/jvm/constant/tag.lux
index 63d5a88f4..66a66f48a 100644
--- a/stdlib/source/library/lux/meta/target/jvm/constant/tag.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/constant/tag.lux
@@ -10,12 +10,12 @@
[\\format (.only Format)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" ///
[encoding
["[1][0]" unsigned (.only U1) (.use "u1//[0]" equivalence)]]])
-(primitive.def .public Tag
+(nominal.def .public Tag
U1
(def .public equivalence
diff --git a/stdlib/source/library/lux/meta/target/jvm/encoding/name.lux b/stdlib/source/library/lux/meta/target/jvm/encoding/name.lux
index dfbf8f419..108ad8752 100644
--- a/stdlib/source/library/lux/meta/target/jvm/encoding/name.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/encoding/name.lux
@@ -6,7 +6,7 @@
["%" \\format (.only format)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def .public internal_separator "/")
(def .public external_separator ".")
@@ -14,7 +14,7 @@
(type .public External
Text)
-(primitive.def .public Internal
+(nominal.def .public Internal
Text
(def .public internal
diff --git a/stdlib/source/library/lux/meta/target/jvm/encoding/signed.lux b/stdlib/source/library/lux/meta/target/jvm/encoding/signed.lux
index 7bb8f86fc..428f5ef8a 100644
--- a/stdlib/source/library/lux/meta/target/jvm/encoding/signed.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/encoding/signed.lux
@@ -21,9 +21,9 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Signed brand)
+(nominal.def .public (Signed brand)
Int
(def .public value
@@ -51,7 +51,7 @@
(with_template [<bytes> <name> <size> <constructor> <maximum> <minimum> <+> <->]
[(with_expansions [<raw> (template.symbol [<name> "'"])]
- (primitive.def <raw> Any)
+ (nominal.def <raw> Any)
(type .public <name> (Signed <raw>)))
(def .public <size> <bytes>)
diff --git a/stdlib/source/library/lux/meta/target/jvm/encoding/unsigned.lux b/stdlib/source/library/lux/meta/target/jvm/encoding/unsigned.lux
index e34ad104f..afd21a166 100644
--- a/stdlib/source/library/lux/meta/target/jvm/encoding/unsigned.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/encoding/unsigned.lux
@@ -20,9 +20,9 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Unsigned brand)
+(nominal.def .public (Unsigned brand)
Nat
(def .public value
@@ -60,7 +60,7 @@
(with_template [<bytes> <name> <size> <constructor> <maximum> <+> <-> <max>]
[(with_expansions [<raw> (template.symbol [<name> "'"])]
- (primitive.def .public <raw> Any)
+ (nominal.def .public <raw> Any)
(type .public <name> (Unsigned <raw>)))
(def .public <size> <bytes>)
diff --git a/stdlib/source/library/lux/meta/target/jvm/index.lux b/stdlib/source/library/lux/meta/target/jvm/index.lux
index 2ac48514b..7f93bb0ff 100644
--- a/stdlib/source/library/lux/meta/target/jvm/index.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/index.lux
@@ -8,7 +8,7 @@
[\\format (.only Format)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[encoding
["[1][0]" unsigned (.only U2)]]])
@@ -16,7 +16,7 @@
(def .public length
//unsigned.bytes/2)
-(primitive.def .public (Index kind)
+(nominal.def .public (Index kind)
U2
(def .public index
diff --git a/stdlib/source/library/lux/meta/target/jvm/loader.lux b/stdlib/source/library/lux/meta/target/jvm/loader.lux
index 5e9b5fa0c..689fab421 100644
--- a/stdlib/source/library/lux/meta/target/jvm/loader.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/loader.lux
@@ -91,12 +91,12 @@
bytecode)
(as java/lang/Object
(|> 0
- (as (Primitive "java.lang.Long"))
+ (as (Nominal "java.lang.Long"))
ffi.long_to_int))
(as java/lang/Object
(|> bytecode
binary.size
- (as (Primitive "java.lang.Long"))
+ (as (Nominal "java.lang.Long"))
ffi.long_to_int))))]
(java/lang/reflect/Method::invoke loader signature java/lang/ClassLoader::defineClass)))
diff --git a/stdlib/source/library/lux/meta/target/jvm/modifier.lux b/stdlib/source/library/lux/meta/target/jvm/modifier.lux
index 6cac02f5c..9b1b0843e 100644
--- a/stdlib/source/library/lux/meta/target/jvm/modifier.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/modifier.lux
@@ -19,12 +19,12 @@
[macro (.only with_symbols)
[syntax (.only syntax)]]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[encoding
["[1][0]" unsigned]]])
-(primitive.def .public (Modifier of)
+(nominal.def .public (Modifier of)
//unsigned.U2
(def .public code
diff --git a/stdlib/source/library/lux/meta/target/jvm/modifier/inner.lux b/stdlib/source/library/lux/meta/target/jvm/modifier/inner.lux
index 5fc4e07ff..6a2a188fe 100644
--- a/stdlib/source/library/lux/meta/target/jvm/modifier/inner.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/modifier/inner.lux
@@ -3,10 +3,10 @@
[lux (.except static)
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[// (.only modifiers)])
-(primitive.def .public Inner Any)
+(nominal.def .public Inner Any)
(modifiers
Inner
diff --git a/stdlib/source/library/lux/meta/target/jvm/reflection.lux b/stdlib/source/library/lux/meta/target/jvm/reflection.lux
index 2a0ad37a8..2e977d594 100644
--- a/stdlib/source/library/lux/meta/target/jvm/reflection.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/reflection.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive parameter type)
+ [lux (.except parameter type)
["[0]" ffi (.only import)]
[abstract
["[0]" monad (.only do)]]
@@ -291,13 +291,13 @@
(def .public (correspond class type)
(-> (java/lang/Class java/lang/Object) Type (Try Mapping))
(when type
- {.#Primitive array.primitive (list :member:)}
+ {.#Nominal array.nominal (list :member:)}
(if (java/lang/Class::isArray class)
(correspond (java/lang/Class::getComponentType class)
:member:)
(exception.except ..cannot_correspond [class type]))
- {.#Primitive name params}
+ {.#Nominal name params}
(let [class_name (java/lang/Class::getName class)
class_params (array.list {.#None} (java/lang/Class::getTypeParameters class))
num_class_params (list.size class_params)
diff --git a/stdlib/source/library/lux/meta/target/jvm/type.lux b/stdlib/source/library/lux/meta/target/jvm/type.lux
index f55b66ef9..9253258f5 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive Type Declaration int char)
+ [lux (.except Type Declaration int char)
[abstract
[equivalence (.only Equivalence)]
[hash (.only Hash)]]
@@ -16,7 +16,7 @@
["n" nat]]]
[meta
[type
- ["[0]" primitive (.except def #name)]]]]]
+ ["[0]" nominal (.except def #name)]]]]]
["[0]" //
[encoding
["[1][0]" name (.only External)]]]
@@ -26,7 +26,7 @@
["[1][0]" descriptor (.only Descriptor)]
["[1][0]" reflection (.only Reflection)]])
-(primitive.def .public (Type category)
+(nominal.def .public (Type category)
[(Signature category)
(Descriptor category)
(Reflection category)]
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/alias.lux b/stdlib/source/library/lux/meta/target/jvm/type/alias.lux
index 8d9ddc7f4..99d623d5e 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/alias.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/alias.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Primitive int char parameter)
+ [lux (.except Type int char parameter)
[abstract
["[0]" monad (.only do)]]
[control
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/category.lux b/stdlib/source/library/lux/meta/target/jvm/type/category.lux
index 9dfe3344c..5ab489d09 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/category.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/category.lux
@@ -1,30 +1,30 @@
(.require
[library
- [lux (.except Primitive Declaration)
+ [lux (.except Declaration)
[meta
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def Void' Any)
-(primitive.def .public (Value' kind) Any)
-(primitive.def .public (Return' kind) Any)
-(primitive.def .public Method Any)
+(nominal.def Void' Any)
+(nominal.def .public (Value' kind) Any)
+(nominal.def .public (Return' kind) Any)
+(nominal.def .public Method Any)
(type .public Return (<| Return' Any))
(type .public Value (<| Return' Value' Any))
(type .public Void (<| Return' Void'))
-(primitive.def (Object' brand) Any)
+(nominal.def (Object' brand) Any)
(type .public Object (<| Return' Value' Object' Any))
-(primitive.def (Parameter' brand) Any)
+(nominal.def (Parameter' brand) Any)
(type .public Parameter (<| Return' Value' Object' Parameter' Any))
(with_template [<parents> <child>]
[(with_expansions [<raw> (template.symbol [<child> "'"])]
- (primitive.def <raw> Any)
+ (nominal.def <raw> Any)
(type .public <child>
(`` (<| Return' Value' (,, (template.spliced <parents>)) <raw>))))]
@@ -34,5 +34,5 @@
[[Object' Parameter'] Array]
)
-(primitive.def .public Declaration Any)
-(primitive.def .public Inheritance Any)
+(nominal.def .public Declaration Any)
+(nominal.def .public Inheritance Any)
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/descriptor.lux b/stdlib/source/library/lux/meta/target/jvm/type/descriptor.lux
index c9d50b9da..46e360bae 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/descriptor.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/descriptor.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive Declaration int char)
+ [lux (.except Declaration int char)
[abstract
[equivalence (.only Equivalence)]]
[control
@@ -15,14 +15,14 @@
["n" nat]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[category (.only Void Value Return Method Primitive Object Class Array Var Parameter Declaration)]
["/[1]" //
[encoding
["[1][0]" name (.only Internal External)]]]])
-(primitive.def .public (Descriptor category)
+(nominal.def .public (Descriptor category)
Text
(def .public descriptor
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/lux.lux b/stdlib/source/library/lux/meta/target/jvm/type/lux.lux
index 306f88580..5e9b87242 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/lux.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/lux.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive int char parameter type)
+ [lux (.except int char parameter type)
[abstract
["[0]" monad (.only do)]]
[control
@@ -17,7 +17,7 @@
["[0]" dictionary (.only Dictionary)]]]
[meta
[type
- [":" primitive]
+ [":" nominal]
["[0]" check (.only Check) (.use "[1]#[0]" monad)]]]]]
["[0]" // (.only)
[category (.only Void Value Return Method Primitive Object Class Array Var Parameter)]
@@ -58,7 +58,7 @@
[(def <name>
(Parser (Check Type))
(<>.after <parser>
- (<>#in (check#in {.#Primitive (//reflection.reflection <reflection>) {.#End}}))))]
+ (<>#in (check#in {.#Nominal (//reflection.reflection <reflection>) {.#End}}))))]
[boolean //parser.boolean //reflection.boolean]
[byte //parser.byte //reflection.byte]
@@ -74,7 +74,7 @@
[(def <name>
(Parser (Check Type))
(<>.after <parser>
- (<>#in (check#in {.#Primitive <box> {.#End}}))))]
+ (<>#in (check#in {.#Nominal <box> {.#End}}))))]
[boxed_boolean //parser.boolean //box.boolean]
[boxed_byte //parser.byte //box.byte]
@@ -139,7 +139,7 @@
(<>.else (list)))]
(in (do [! check.monad]
[parameters (monad.all ! parameters)]
- (in {.#Primitive name parameters}))))
+ (in {.#Nominal name parameters}))))
(<>.after (<text>.this //descriptor.class_prefix))
(<>.before (<text>.this //descriptor.class_suffix))))
@@ -176,7 +176,7 @@
(-> (Parser (Check Type)) (Parser (Check Type)))
(|>> (<>#each (check#each (function (_ elementT)
(when elementT
- {.#Primitive name {.#End}}
+ {.#Nominal name {.#End}}
(if (`` (or (,, (with_template [<reflection>]
[(text#= (//reflection.reflection <reflection>) name)]
@@ -188,7 +188,7 @@
[//reflection.float]
[//reflection.double]
[//reflection.char]))))
- {.#Primitive (|> name //reflection.class //reflection.array //reflection.reflection) {.#End}}
+ {.#Nominal (|> name //reflection.class //reflection.array //reflection.reflection) {.#End}}
(|> elementT array.Array type_literal))
_
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/parser.lux b/stdlib/source/library/lux/meta/target/jvm/type/parser.lux
index ad41daeac..61c80017c 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/parser.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/parser.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Primitive Declaration int char parameter)
+ [lux (.except Type Declaration int char parameter)
[abstract
[monad (.only do)]]
[control
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/reflection.lux b/stdlib/source/library/lux/meta/target/jvm/type/reflection.lux
index 0cb424d28..003030a9b 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/reflection.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/reflection.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive Declaration int char)
+ [lux (.except Declaration int char)
[abstract
[equivalence (.only Equivalence)]]
[data
@@ -8,7 +8,7 @@
["%" \\format (.only format)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[category (.only Void Value Return Method Primitive Object Class Array Var Parameter Declaration)]
["[1][0]" descriptor]
@@ -16,7 +16,7 @@
[encoding
["[1][0]" name (.only External)]]]])
-(primitive.def .public (Reflection category)
+(nominal.def .public (Reflection category)
Text
(def .public reflection
diff --git a/stdlib/source/library/lux/meta/target/jvm/type/signature.lux b/stdlib/source/library/lux/meta/target/jvm/type/signature.lux
index 8a0cbc5f5..1f7eb3a53 100644
--- a/stdlib/source/library/lux/meta/target/jvm/type/signature.lux
+++ b/stdlib/source/library/lux/meta/target/jvm/type/signature.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Primitive Declaration int char)
+ [lux (.except Declaration int char)
[abstract
[equivalence (.only Equivalence)]
[hash (.only Hash)]]
@@ -13,7 +13,7 @@
["[0]" list (.use "[1]#[0]" functor)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
[category (.only Void Value Return Method Primitive Object Class Array Var Parameter Declaration Inheritance)]
["[1][0]" descriptor]
@@ -21,7 +21,7 @@
[encoding
["[1][0]" name (.only External)]]]])
-(primitive.def .public (Signature category)
+(nominal.def .public (Signature category)
Text
(def .public signature
diff --git a/stdlib/source/library/lux/meta/target/lua.lux b/stdlib/source/library/lux/meta/target/lua.lux
index 063c0fc4d..0bafbd9ca 100644
--- a/stdlib/source/library/lux/meta/target/lua.lux
+++ b/stdlib/source/library/lux/meta/target/lua.lux
@@ -25,7 +25,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
... Added the carriage return for better Windows compatibility.
(def \n+
@@ -40,7 +40,7 @@
(def input_separator ", ")
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(def .public equivalence
@@ -65,7 +65,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def (<brand> brand) Any)
+ (nominal.def (<brand> brand) Any)
(`` (type .public <type> (|> Any <brand> (,, (template.spliced <super>+))))))]
[Expression [Code]]
@@ -76,7 +76,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def <brand> Any)
+ (nominal.def <brand> Any)
(`` (type .public <type> (|> <brand> (,, (template.spliced <super>+))))))]
[Literal [Computation' Expression' Code]]
diff --git a/stdlib/source/library/lux/meta/target/php.lux b/stdlib/source/library/lux/meta/target/php.lux
index e68d9cc37..44e663934 100644
--- a/stdlib/source/library/lux/meta/target/php.lux
+++ b/stdlib/source/library/lux/meta/target/php.lux
@@ -24,7 +24,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def input_separator ", ")
(def statement_suffix ";")
@@ -48,7 +48,7 @@
(-> Text Text)
(text.enclosed ["(" ")"]))
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(def .public equivalence
@@ -73,7 +73,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def (<brand> brand) Any)
+ (nominal.def (<brand> brand) Any)
(`` (type .public <type> (|> Any <brand> (,, (template.spliced <super>+))))))]
[Expression [Code]]
@@ -84,7 +84,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def .public <brand> Any)
+ (nominal.def .public <brand> Any)
(`` (type .public <type> (|> <brand> (,, (template.spliced <super>+))))))]
[Literal [Computation' Expression' Code]]
diff --git a/stdlib/source/library/lux/meta/target/python.lux b/stdlib/source/library/lux/meta/target/python.lux
index 9ff10bbe0..9d426d1ed 100644
--- a/stdlib/source/library/lux/meta/target/python.lux
+++ b/stdlib/source/library/lux/meta/target/python.lux
@@ -25,7 +25,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(.def input_separator
", ")
@@ -57,7 +57,7 @@
(|>> (format \n+)
(text.replaced text.new_line nested_new_line)))))
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(.def .public equivalence
@@ -82,7 +82,7 @@
(with_template [<type> <super>]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (`` (primitive.def (<brand> brand) Any))
+ (`` (nominal.def (<brand> brand) Any))
(`` (type .public (<type> brand)
(<super> (<brand> brand)))))]
@@ -95,7 +95,7 @@
(with_template [<type> <super>]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (`` (primitive.def <brand> Any))
+ (`` (nominal.def <brand> Any))
(`` (type .public <type> (<super> <brand>))))]
[Literal Computation]
@@ -104,7 +104,7 @@
)
(with_template [<var> <brand>]
- [(primitive.def .public <brand> Any)
+ [(nominal.def .public <brand> Any)
(type .public <var> (Var <brand>))]
diff --git a/stdlib/source/library/lux/meta/target/r.lux b/stdlib/source/library/lux/meta/target/r.lux
index ae57971a3..e95eff6df 100644
--- a/stdlib/source/library/lux/meta/target/r.lux
+++ b/stdlib/source/library/lux/meta/target/r.lux
@@ -20,14 +20,14 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
-(primitive.def .public (Code kind)
+(nominal.def .public (Code kind)
Text
(with_template [<type> <super>+]
[(with_expansions [<kind> (template.symbol [<type> "'"])]
- (primitive.def .public (<kind> kind) Any)
+ (nominal.def .public (<kind> kind) Any)
(`` (type .public <type> (|> Any <kind> (,, (template.spliced <super>+))))))]
[Expression [Code]]
@@ -35,14 +35,14 @@
(with_template [<type> <super>+]
[(with_expansions [<kind> (template.symbol [<type> "'"])]
- (primitive.def .public (<kind> kind) Any)
+ (nominal.def .public (<kind> kind) Any)
(`` (type .public (<type> <brand>) (|> <brand> <kind> (,, (template.spliced <super>+))))))]
[Var [Expression' Code]]
)
(with_template [<var> <kind>]
- [(primitive.def .public <kind> Any)
+ [(nominal.def .public <kind> Any)
(type .public <var> (Var <kind>))]
[SVar Single]
diff --git a/stdlib/source/library/lux/meta/target/ruby.lux b/stdlib/source/library/lux/meta/target/ruby.lux
index 2bef96112..17892b773 100644
--- a/stdlib/source/library/lux/meta/target/ruby.lux
+++ b/stdlib/source/library/lux/meta/target/ruby.lux
@@ -24,7 +24,7 @@
[syntax (.only syntax)]
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def input_separator ", ")
(def statement_suffix ";")
@@ -40,7 +40,7 @@
(|>> (format \n+)
(text.replaced text.new_line nested_new_line))))
-(primitive.def .public (Code brand)
+(nominal.def .public (Code brand)
Text
(def .public equivalence
@@ -59,7 +59,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def (<brand> brand) Any)
+ (nominal.def (<brand> brand) Any)
(`` (type .public <type> (|> Any <brand> (,, (template.spliced <super>+))))))]
[Expression [Code]]
@@ -72,7 +72,7 @@
(with_template [<type> <super>+]
[(with_expansions [<brand> (template.symbol [<type> "'"])]
- (primitive.def <brand> Any)
+ (nominal.def <brand> Any)
(`` (type .public <type> (|> <brand> (,, (template.spliced <super>+))))))]
[Literal [Computation' Expression' Code]]
diff --git a/stdlib/source/library/lux/meta/target/scheme.lux b/stdlib/source/library/lux/meta/target/scheme.lux
index af3fd8b00..f9a3a71df 100644
--- a/stdlib/source/library/lux/meta/target/scheme.lux
+++ b/stdlib/source/library/lux/meta/target/scheme.lux
@@ -20,7 +20,7 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
... Added the carriage return for better Windows compatibility.
(def \n+
@@ -32,7 +32,7 @@
(.let [nested_new_line (format text.new_line text.tab)]
(text.replaced text.new_line nested_new_line)))
-(primitive.def .public (Code k)
+(nominal.def .public (Code k)
Text
(def .public equivalence
@@ -48,14 +48,14 @@
(def hash (|>> representation (at text.hash hash)))))
(with_template [<type> <brand> <super>+]
- [(primitive.def .public (<brand> brand) Any)
+ [(nominal.def .public (<brand> brand) Any)
(`` (type .public <type> (|> Any <brand> (,, (template.spliced <super>+)))))]
[Expression Expression' [Code]]
)
(with_template [<type> <brand> <super>+]
- [(primitive.def .public <brand> Any)
+ [(nominal.def .public <brand> Any)
(`` (type .public <type> (|> <brand> (,, (template.spliced <super>+)))))]
[Var Var' [Expression' Code]]
diff --git a/stdlib/source/library/lux/meta/type.lux b/stdlib/source/library/lux/meta/type.lux
index da2463a52..90ad79d1e 100644
--- a/stdlib/source/library/lux/meta/type.lux
+++ b/stdlib/source/library/lux/meta/type.lux
@@ -80,9 +80,9 @@
(`` (def .public (format type)
(-> Type Text)
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(all text#composite
- "(Primitive "
+ "(Nominal "
(text.enclosed' text.double_quote name)
(|> params
(list#each (|>> format (text#composite " ")))
@@ -140,8 +140,8 @@
(`` (def (reduced env type)
(-> (List Type) Type Type)
(when type
- {.#Primitive name params}
- {.#Primitive name (list#each (reduced env) params)}
+ {.#Nominal name params}
+ {.#Nominal name (list#each (reduced env) params)}
(,, (with_template [<tag>]
[{<tag> left right}
@@ -188,7 +188,7 @@
false
(same? x y))
(when [x y]
- [{.#Primitive xname xparams} {.#Primitive yname yparams}]
+ [{.#Nominal xname xparams} {.#Nominal yname yparams}]
(and (text#= xname yname)
(n.= (list.size yparams) (list.size xparams))
(list#mix (.function (_ [x y] prev) (and prev (= x y)))
@@ -264,9 +264,9 @@
(`` (def .public (code type)
(-> Type Code)
(when type
- {.#Primitive name params}
- (` {.#Primitive (, (code.text name))
- (.list (,* (list#each code params)))})
+ {.#Nominal name params}
+ (` {.#Nominal (, (code.text name))
+ (.list (,* (list#each code params)))})
(,, (with_template [<tag>]
[{<tag> idx}
@@ -390,14 +390,14 @@
_ (|> element_type
(array (-- depth))
(list)
- {.#Primitive array.primitive})))
+ {.#Nominal array.nominal})))
(def .public (flat_array type)
(-> Type [Nat Type])
(with_expansions [<default> [0 type]]
(when type
- {.#Primitive name (list element_type)}
- (if (text#= array.primitive name)
+ {.#Nominal name (list element_type)}
+ (if (text#= array.nominal name)
(.let [[depth element_type] (flat_array element_type)]
[(++ depth) element_type])
<default>)
@@ -511,8 +511,8 @@
(if (at ..equivalence = before it)
after
(when it
- {.#Primitive name co_variant}
- {.#Primitive name (list#each again co_variant)}
+ {.#Nominal name co_variant}
+ {.#Nominal name (list#each again co_variant)}
(,, (with_template [<tag>]
[{<tag> left right}
diff --git a/stdlib/source/library/lux/meta/type/check.lux b/stdlib/source/library/lux/meta/type/check.lux
index bcd8fcadb..fc4794124 100644
--- a/stdlib/source/library/lux/meta/type/check.lux
+++ b/stdlib/source/library/lux/meta/type/check.lux
@@ -707,7 +707,7 @@
([.#UnivQ ..var]
[.#ExQ ..existential])
- [{.#Primitive e_name e_params} {.#Primitive a_name a_params}]
+ [{.#Nominal e_name e_params} {.#Nominal a_name a_params}]
(if (!text#= e_name a_name)
(loop (again [assumptions assumptions
e_params e_params
@@ -779,10 +779,10 @@
(def .public (clean aliases inputT)
(-> (List Var) Type (Check Type))
(when inputT
- {.#Primitive name paramsT+}
+ {.#Nominal name paramsT+}
(|> paramsT+
(monad.each ..monad (clean aliases))
- (check#each (|>> {.#Primitive name})))
+ (check#each (|>> {.#Nominal name})))
(^.or {.#Parameter _}
{.#Ex _}
diff --git a/stdlib/source/library/lux/meta/type/dynamic.lux b/stdlib/source/library/lux/meta/type/dynamic.lux
index ef7605ad2..24a08e645 100644
--- a/stdlib/source/library/lux/meta/type/dynamic.lux
+++ b/stdlib/source/library/lux/meta/type/dynamic.lux
@@ -14,7 +14,7 @@
[macro (.only with_symbols)
["[0]" syntax (.only syntax)]]]]]
["[0]" // (.only)
- ["[0]" primitive (.only)]])
+ ["[0]" nominal (.only)]])
(exception.def .public (wrong_type [expected actual])
(Exception [Type Type])
@@ -23,7 +23,7 @@
["Actual" (%.type actual)])))
(with_expansions [<representation> [Type Any]]
- (primitive.def .public Dynamic
+ (nominal.def .public Dynamic
<representation>
(def .public dynamic
@@ -47,6 +47,6 @@
(def .public (format value)
(-> Dynamic (Try Text))
- (let [[type value] (primitive.representation value)]
+ (let [[type value] (nominal.representation value)]
(debug.representation type value)))
))
diff --git a/stdlib/source/library/lux/meta/type/linear.lux b/stdlib/source/library/lux/meta/type/linear.lux
index 25b8a52fe..89080dbb4 100644
--- a/stdlib/source/library/lux/meta/type/linear.lux
+++ b/stdlib/source/library/lux/meta/type/linear.lux
@@ -24,7 +24,7 @@
["[0]" macro (.only)
[syntax (.only syntax)]]]]]
[//
- ["[0]" primitive (.except def)]])
+ ["[0]" nominal (.except def)]])
(type .public (Procedure ! input output value)
(-> input (! [output value])))
@@ -67,10 +67,10 @@
[output procedure]
(in [keys output]))))
-(primitive.def .public Ordered Any)
-(primitive.def .public Commutative Any)
+(nominal.def .public Ordered Any)
+(nominal.def .public Commutative Any)
-(primitive.def .public (Key mode key)
+(nominal.def .public (Key mode key)
Any
(with_template [<name> <mode>]
@@ -82,7 +82,7 @@
[commutative_key Commutative]
))
-(primitive.def .public (Res key value)
+(nominal.def .public (Res key value)
value
(with_template [<name> <mode> <key>]
diff --git a/stdlib/source/library/lux/meta/type/primitive.lux b/stdlib/source/library/lux/meta/type/nominal.lux
index 033be6d6e..1d5ce2602 100644
--- a/stdlib/source/library/lux/meta/type/primitive.lux
+++ b/stdlib/source/library/lux/meta/type/nominal.lux
@@ -80,7 +80,7 @@
... TODO: Make sure the generated code always gets optimized away.
... (This applies to uses of "abstraction" and "representation")
(.def .public def
- (syntax (_ [[export_policy [name type_vars] representation_type primitives]
+ (syntax (_ [[export_policy [name type_vars] representation_type nominals]
..abstract])
(do meta.monad
[current_module meta.current_module_name
@@ -90,11 +90,11 @@
representation_declaration (` ((, g!Representation) (,* type_varsC)))]]
(..declaration [name type_varsC abstraction_declaration representation_declaration]
(` (.these (type (, export_policy) (, abstraction_declaration)
- (Primitive (, (code.text (symbol#encoded [current_module name])))
- [(,* type_varsC)]))
+ (Nominal (, (code.text (symbol#encoded [current_module name])))
+ [(,* type_varsC)]))
(type (, representation_declaration)
(, representation_type))
- (,* primitives)))))))
+ (,* nominals)))))))
(.def selection
(Parser [(List Code) Code])
diff --git a/stdlib/source/library/lux/meta/type/poly.lux b/stdlib/source/library/lux/meta/type/poly.lux
index a98fd211c..54736333f 100644
--- a/stdlib/source/library/lux/meta/type/poly.lux
+++ b/stdlib/source/library/lux/meta/type/poly.lux
@@ -47,9 +47,9 @@
(def .public (code env type)
(-> Env Type Code)
(when type
- {.#Primitive name params}
- (` {.#Primitive (, (code.text name))
- (.list (,* (list#each (code env) params)))})
+ {.#Nominal name params}
+ (` {.#Nominal (, (code.text name))
+ (.list (,* (list#each (code env) params)))})
(^.with_template [<tag>]
[{<tag> idx}
@@ -63,7 +63,7 @@
(|> (dictionary.value idx env) maybe.trusted product.left (code env))
(` (.$ (, (code.nat (-- idx)))))))
- {.#Apply {.#Primitive "" {.#End}}
+ {.#Apply {.#Nominal "" {.#End}}
{.#Parameter idx}}
(when (<//>.argument env idx)
0 (|> env (dictionary.value 0) maybe.trusted product.left (code env))
diff --git a/stdlib/source/library/lux/meta/type/quotient.lux b/stdlib/source/library/lux/meta/type/quotient.lux
index 99a63d400..ab043d3ff 100644
--- a/stdlib/source/library/lux/meta/type/quotient.lux
+++ b/stdlib/source/library/lux/meta/type/quotient.lux
@@ -9,9 +9,9 @@
[macro (.only with_symbols)
[syntax (.only syntax)]]]]]
["[0]" // (.only)
- ["[0]" primitive (.except def)]])
+ ["[0]" nominal (.except def)]])
-(primitive.def .public (Class t c %)
+(nominal.def .public (Class t c %)
(-> t c)
(def .public class
@@ -20,7 +20,7 @@
(-> (-> t c) (Class t c %))))
(|>> abstraction))
- (primitive.def .public (Quotient t c %)
+ (nominal.def .public (Quotient t c %)
(Record
[#value t
#label c])
diff --git a/stdlib/source/library/lux/meta/type/refinement.lux b/stdlib/source/library/lux/meta/type/refinement.lux
index 3ccaf066d..f1778d1b1 100644
--- a/stdlib/source/library/lux/meta/type/refinement.lux
+++ b/stdlib/source/library/lux/meta/type/refinement.lux
@@ -10,9 +10,9 @@
["[0]" macro (.only)
[syntax (.only syntax)]]]]]
["[0]" // (.only)
- ["[0]" primitive (.except def)]])
+ ["[0]" nominal (.except def)]])
-(primitive.def .public (Refined t %)
+(nominal.def .public (Refined t %)
(Record
[#value t
#predicate (Predicate t)])
diff --git a/stdlib/source/library/lux/meta/type/unit.lux b/stdlib/source/library/lux/meta/type/unit.lux
index e4bf7a1e9..e7dfa241b 100644
--- a/stdlib/source/library/lux/meta/type/unit.lux
+++ b/stdlib/source/library/lux/meta/type/unit.lux
@@ -18,9 +18,9 @@
["[0]" macro (.only)
[syntax (.only syntax)]]]]]
["[0]" // (.only)
- ["[0]" primitive (.except def)]])
+ ["[0]" nominal (.except def)]])
-(primitive.def .public (Measure scale unit)
+(nominal.def .public (Measure scale unit)
Int
(def .public measure
diff --git a/stdlib/source/library/lux/meta/type/variance.lux b/stdlib/source/library/lux/meta/type/variance.lux
index 929d6268b..f7828e49a 100644
--- a/stdlib/source/library/lux/meta/type/variance.lux
+++ b/stdlib/source/library/lux/meta/type/variance.lux
@@ -12,7 +12,7 @@
(-> it it))
(type .public (Mutable r w)
- (Primitive "#Mutable" [(-> w r)]))
+ (Nominal "#Mutable" [(-> w r)]))
(with_template [<name> <type>]
[(def .public <name>
diff --git a/stdlib/source/library/lux/world/db/sql.lux b/stdlib/source/library/lux/world/db/sql.lux
index 9a2e04dc8..dee4d034f 100644
--- a/stdlib/source/library/lux/world/db/sql.lux
+++ b/stdlib/source/library/lux/world/db/sql.lux
@@ -14,7 +14,7 @@
[macro
["[0]" template]]]
[type
- ["[0]" primitive (.except def)]]]])
+ ["[0]" nominal (.except def)]]]])
(def parenthesize
(-> Text Text)
@@ -22,7 +22,7 @@
... Kind
(with_template [<declaration>]
- [(primitive.def .public <declaration> Any)]
+ [(nominal.def .public <declaration> Any)]
[Literal']
[Column']
@@ -63,7 +63,7 @@
(def .public no_alias Alias "")
-(primitive.def .public (SQL kind)
+(nominal.def .public (SQL kind)
Text
... SQL
diff --git a/stdlib/source/library/lux/world/environment.lux b/stdlib/source/library/lux/world/environment.lux
index f391ea67c..42f8e8805 100644
--- a/stdlib/source/library/lux/world/environment.lux
+++ b/stdlib/source/library/lux/world/environment.lux
@@ -274,8 +274,8 @@
... @.scheme
... (these (ffi.import (exit [Int] "io" Nothing))
... ... https://srfi.schemers.org/srfi-98/srfi-98.html
- ... (primitive.def Pair Any)
- ... (primitive.def PList Any)
+ ... (nominal.def Pair Any)
+ ... (nominal.def PList Any)
... (ffi.import (get-environment-variables [] "io" PList))
... (ffi.import (car [Pair] Text))
... (ffi.import (cdr [Pair] Text))
diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux
index 554d8c4f6..b27ffa2bc 100644
--- a/stdlib/source/library/lux/world/file.lux
+++ b/stdlib/source/library/lux/world/file.lux
@@ -512,7 +512,7 @@
@.python
(these (type (Tuple/2 left right)
- (Primitive "python_tuple[2]" [left right]))
+ (Nominal "python_tuple[2]" [left right]))
(ffi.import PyFile
"[1]::[0]"
diff --git a/stdlib/source/library/lux/world/file/watch.lux b/stdlib/source/library/lux/world/file/watch.lux
index b8d07c7fc..22e4c7330 100644
--- a/stdlib/source/library/lux/world/file/watch.lux
+++ b/stdlib/source/library/lux/world/file/watch.lux
@@ -29,13 +29,13 @@
[meta
["@" target]
[type
- ["[0]" primitive (.only representation abstraction)]]]
+ ["[0]" nominal (.only representation abstraction)]]]
[world
[time
["[0]" instant (.only Instant) (.use "[1]#[0]" equivalence)]]]]]
["[0]" //])
-(primitive.def .public Concern
+(nominal.def .public Concern
(Record
[#creation Bit
#modification Bit
diff --git a/stdlib/source/library/lux/world/locale.lux b/stdlib/source/library/lux/world/locale.lux
index f42c19e20..72df452e4 100644
--- a/stdlib/source/library/lux/world/locale.lux
+++ b/stdlib/source/library/lux/world/locale.lux
@@ -12,12 +12,12 @@
["[0]" encoding (.only Encoding)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[/
["[0]" language (.only Language)]
["[0]" territory (.only Territory)]])
-(primitive.def .public Locale
+(nominal.def .public Locale
Text
(def territory_separator "_")
diff --git a/stdlib/source/library/lux/world/locale/language.lux b/stdlib/source/library/lux/world/locale/language.lux
index 31fa44455..ef62ab9a5 100644
--- a/stdlib/source/library/lux/world/locale/language.lux
+++ b/stdlib/source/library/lux/world/locale/language.lux
@@ -10,10 +10,10 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def #name)]]]]])
+ ["[0]" nominal (.except def #name)]]]]])
... https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
-(primitive.def .public Language
+(nominal.def .public Language
(Record
[#name Text
#code Text])
diff --git a/stdlib/source/library/lux/world/locale/territory.lux b/stdlib/source/library/lux/world/locale/territory.lux
index bf33f64b6..5863a7e52 100644
--- a/stdlib/source/library/lux/world/locale/territory.lux
+++ b/stdlib/source/library/lux/world/locale/territory.lux
@@ -10,10 +10,10 @@
[macro
["[0]" template]]
[type
- ["[0]" primitive (.except def #name)]]]]])
+ ["[0]" nominal (.except def #name)]]]]])
... https://en.wikipedia.org/wiki/ISO_3166-1
-(primitive.def .public Territory
+(nominal.def .public Territory
(Record
[#name Text
#short Text
diff --git a/stdlib/source/library/lux/world/net/http/cookie.lux b/stdlib/source/library/lux/world/net/http/cookie.lux
index c8acede49..a07d0e114 100644
--- a/stdlib/source/library/lux/world/net/http/cookie.lux
+++ b/stdlib/source/library/lux/world/net/http/cookie.lux
@@ -21,7 +21,7 @@
["i" int]]]
[meta
[type
- ["[0]" primitive (.only)]]]
+ ["[0]" nominal (.only)]]]
[world
["[0]" time (.only)
["[0]" day]
@@ -130,13 +130,13 @@
[http_only "HttpOnly"]
)
-(primitive.def .public CSRF_Policy
+(nominal.def .public CSRF_Policy
Text
(with_template [<name> <value>]
[(def .public <name>
CSRF_Policy
- (primitive.abstraction <value>))]
+ (nominal.abstraction <value>))]
[strict "Strict"]
[lax "Lax"]
@@ -145,7 +145,7 @@
(def .public (same_site policy)
(-> CSRF_Policy
Attribute)
- (..attribute (format "SameSite=" (primitive.representation policy))))
+ (..attribute (format "SameSite=" (nominal.representation policy))))
)
(type .public Jar
diff --git a/stdlib/source/library/lux/world/net/http/version.lux b/stdlib/source/library/lux/world/net/http/version.lux
index 51eab0f59..b3a466cb7 100644
--- a/stdlib/source/library/lux/world/net/http/version.lux
+++ b/stdlib/source/library/lux/world/net/http/version.lux
@@ -8,28 +8,28 @@
["[0]" text (.use "[1]#[0]" hash)]]
[meta
[type
- ["[0]" primitive (.only)]]]]])
+ ["[0]" nominal (.only)]]]]])
-(primitive.def .public Version
+(nominal.def .public Version
Text
(def .public equivalence
(Equivalence Version)
(implementation
(def (= reference it)
- (text#= (primitive.representation reference)
- (primitive.representation it)))))
+ (text#= (nominal.representation reference)
+ (nominal.representation it)))))
(def .public hash
(Hash Version)
(implementation
(def equivalence ..equivalence)
- (def hash (|>> primitive.representation text#hash))))
+ (def hash (|>> nominal.representation text#hash))))
(with_template [<name> <version>]
[(def .public <name>
Version
- (primitive.abstraction <version>))]
+ (nominal.abstraction <version>))]
[v0_9 "0.9"]
[v1_0 "1.0"]
diff --git a/stdlib/source/library/lux/world/net/mime.lux b/stdlib/source/library/lux/world/net/mime.lux
index 409e13080..ab8b54c29 100644
--- a/stdlib/source/library/lux/world/net/mime.lux
+++ b/stdlib/source/library/lux/world/net/mime.lux
@@ -10,18 +10,18 @@
["[0]" encoding (.only Encoding)]]]
[meta
[type
- ["[0]" primitive]]]]])
+ ["[0]" nominal]]]]])
-(primitive.def .public MIME
+(nominal.def .public MIME
Text
(def .public mime
(-> Text MIME)
- (|>> primitive.abstraction))
+ (|>> nominal.abstraction))
(def .public name
(-> MIME Text)
- (|>> primitive.representation))
+ (|>> nominal.representation))
(def .public equivalence
(Equivalence MIME)
diff --git a/stdlib/source/library/lux/world/net/uri/scheme.lux b/stdlib/source/library/lux/world/net/uri/scheme.lux
index aabe810b1..108254cc2 100644
--- a/stdlib/source/library/lux/world/net/uri/scheme.lux
+++ b/stdlib/source/library/lux/world/net/uri/scheme.lux
@@ -8,16 +8,16 @@
["[0]" text]]
[meta
[type
- ["[0]" primitive (.only)]]]]])
+ ["[0]" nominal (.only)]]]]])
... https://en.wikipedia.org/wiki/List_of_URI_schemes
-(primitive.def .public Scheme
+(nominal.def .public Scheme
Text
(with_template [<scheme> <name>]
[(def .public <name>
Scheme
- (primitive.abstraction <scheme>))]
+ (nominal.abstraction <scheme>))]
["about" about]
["acap" acap]
@@ -125,11 +125,11 @@
(def .public scheme
(-> Text Scheme)
- (|>> primitive.abstraction))
+ (|>> nominal.abstraction))
(def .public name
(-> Scheme Text)
- (|>> primitive.representation))
+ (|>> nominal.representation))
(def .public equivalence
(Equivalence Scheme)
diff --git a/stdlib/source/library/lux/world/time.lux b/stdlib/source/library/lux/world/time.lux
index a1e2cea24..0848dbbb8 100644
--- a/stdlib/source/library/lux/world/time.lux
+++ b/stdlib/source/library/lux/world/time.lux
@@ -20,7 +20,7 @@
["n" nat (.use "[1]#[0]" decimal)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
[/
["[0]" duration (.only Duration)]])
@@ -79,7 +79,7 @@
[..seconds second_parser invalid_second ..section_parser]
)
-(primitive.def .public Time
+(nominal.def .public Time
Nat
(def .public midnight
diff --git a/stdlib/source/library/lux/world/time/date.lux b/stdlib/source/library/lux/world/time/date.lux
index cf6906bee..efa497d60 100644
--- a/stdlib/source/library/lux/world/time/date.lux
+++ b/stdlib/source/library/lux/world/time/date.lux
@@ -24,7 +24,7 @@
["i" int]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1][0]" year (.only Year)]
["[1][0]" month (.only Month)]])
@@ -69,7 +69,7 @@
(def separator
"-")
-(primitive.def .public Date
+(nominal.def .public Date
(Record
[#year Year
#month Month
diff --git a/stdlib/source/library/lux/world/time/duration.lux b/stdlib/source/library/lux/world/time/duration.lux
index 3aca1d203..627348295 100644
--- a/stdlib/source/library/lux/world/time/duration.lux
+++ b/stdlib/source/library/lux/world/time/duration.lux
@@ -20,11 +20,11 @@
["[0]" nat (.use "[1]#[0]" decimal)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1][0]" year]])
-(primitive.def .public Duration
+(nominal.def .public Duration
Int
(def .public of_millis
diff --git a/stdlib/source/library/lux/world/time/instant.lux b/stdlib/source/library/lux/world/time/instant.lux
index db49c57c6..a7b55a416 100644
--- a/stdlib/source/library/lux/world/time/instant.lux
+++ b/stdlib/source/library/lux/world/time/instant.lux
@@ -23,7 +23,7 @@
[meta
["@" target]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" // (.only Time)
["[0]" duration (.only Duration)]
["[0]" year (.only Year)]
@@ -31,7 +31,7 @@
["[0]" day (.only Day)]
["[0]" date (.only Date)]])
-(primitive.def .public Instant
+(nominal.def .public Instant
Int
(def .public of_millis
@@ -161,7 +161,7 @@
(io (..of_millis (for @.old ("jvm invokestatic:java.lang.System:currentTimeMillis:")
@.jvm (|> (.jvm_member_invoke_static# [] "java.lang.System" "currentTimeMillis" [])
.jvm_object_cast#
- (is (Primitive "java.lang.Long"))
+ (is (Nominal "java.lang.Long"))
(as Int))
@.js (let [date ("js object new" ("js constant" "Date") [])]
(|> ("js object do" "getTime" date [])
diff --git a/stdlib/source/library/lux/world/time/solar.lux b/stdlib/source/library/lux/world/time/solar.lux
index 8c4ffa315..26163e511 100644
--- a/stdlib/source/library/lux/world/time/solar.lux
+++ b/stdlib/source/library/lux/world/time/solar.lux
@@ -16,7 +16,7 @@
[meta
["@" target]
[type
- ["[0]" primitive (.except def)]]]]]
+ ["[0]" nominal (.except def)]]]]]
["[0]" //
["[1]" instant]
["[0]" duration (.only Duration)]])
@@ -24,7 +24,7 @@
(type .public Zone
Text)
-(primitive.def .public Instant
+(nominal.def .public Instant
(Record
[#utc //.Instant
#zone Zone
diff --git a/stdlib/source/library/lux/world/time/year.lux b/stdlib/source/library/lux/world/time/year.lux
index 3dd0c9960..e53b84463 100644
--- a/stdlib/source/library/lux/world/time/year.lux
+++ b/stdlib/source/library/lux/world/time/year.lux
@@ -19,7 +19,7 @@
["i" int (.use "[1]#[0]" decimal)]]]
[meta
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
(def (internal year)
(-> Int Int)
@@ -36,7 +36,7 @@
(exception.def .public there_is_no_year_0)
... https://en.wikipedia.org/wiki/Gregorian_calendar
-(primitive.def .public Year
+(nominal.def .public Year
Int
(def .public (year value)
diff --git a/stdlib/source/parser/lux/data/binary.lux b/stdlib/source/parser/lux/data/binary.lux
index 7ed8a1fdd..2aad65ba1 100644
--- a/stdlib/source/parser/lux/data/binary.lux
+++ b/stdlib/source/parser/lux/data/binary.lux
@@ -274,16 +274,16 @@
(let [pair (//.and type type)
indexed ..nat
quantified (//.and (..list type) type)]
- (!variant [[0 [.#Primitive] (//.and ..text (..list type))]
- [1 [.#Sum] pair]
- [2 [.#Product] pair]
- [3 [.#Function] pair]
- [4 [.#Parameter] indexed]
- [5 [.#Var] indexed]
- [6 [.#Ex] indexed]
- [7 [.#UnivQ] quantified]
- [8 [.#ExQ] quantified]
- [9 [.#Apply] pair]
+ (!variant [[00 [.#Nominal] (//.and ..text (..list type))]
+ [01 [.#Sum] pair]
+ [02 [.#Product] pair]
+ [03 [.#Function] pair]
+ [04 [.#Parameter] indexed]
+ [05 [.#Var] indexed]
+ [06 [.#Ex] indexed]
+ [07 [.#UnivQ] quantified]
+ [08 [.#ExQ] quantified]
+ [09 [.#Apply] pair]
[10 [.#Named] (//.and ..symbol type)]])))))
(def .public location
diff --git a/stdlib/source/parser/lux/meta/type.lux b/stdlib/source/parser/lux/meta/type.lux
index 1dec4fbb1..f84ab2452 100644
--- a/stdlib/source/parser/lux/meta/type.lux
+++ b/stdlib/source/parser/lux/meta/type.lux
@@ -27,7 +27,7 @@
(def |recursion_dummy|
(template (|recursion_dummy|)
- [{.#Primitive "" {.#End}}]))
+ [{.#Nominal "" {.#End}}]))
(with_template [<name>]
[(exception.def .public (<name> type)
diff --git a/stdlib/source/program/aedifex/artifact/time/date.lux b/stdlib/source/program/aedifex/artifact/time/date.lux
index 43b5efe6e..ed3cff954 100644
--- a/stdlib/source/program/aedifex/artifact/time/date.lux
+++ b/stdlib/source/program/aedifex/artifact/time/date.lux
@@ -18,7 +18,7 @@
["i" int]]]
[meta
[type
- ["[0]" primitive (.except def)]]]
+ ["[0]" nominal (.except def)]]]
[world
[time
["[0]" date (.use "[1]#[0]" equivalence)]
@@ -41,7 +41,7 @@
["Maximum" (%.int ..max_year)]
["Year" (%.int (year.value year))])))
-(primitive.def .public Date
+(nominal.def .public Date
date.Date
(def .public epoch
diff --git a/stdlib/source/program/aedifex/hash.lux b/stdlib/source/program/aedifex/hash.lux
index fbbe69825..8b0922916 100644
--- a/stdlib/source/program/aedifex/hash.lux
+++ b/stdlib/source/program/aedifex/hash.lux
@@ -22,7 +22,7 @@
[macro
["^" pattern]]
[type
- ["[0]" primitive (.except def)]]]]])
+ ["[0]" nominal (.except def)]]]]])
... TODO: Replace with pure-Lux implementations of these algorithms
... https://en.wikipedia.org/wiki/SHA-1#SHA-1_pseudocode
@@ -35,10 +35,10 @@
("static" getInstance [java/lang/String] java/security/MessageDigest)
(digest [[byte]] [byte]))
-(primitive.def .public SHA1 Any)
-(primitive.def .public MD5 Any)
+(nominal.def .public SHA1 Any)
+(nominal.def .public MD5 Any)
-(primitive.def .public (Hash h)
+(nominal.def .public (Hash h)
Binary
(def .public data
diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux
index 29e2725cf..f009922e8 100644
--- a/stdlib/source/test/lux.lux
+++ b/stdlib/source/test/lux.lux
@@ -587,9 +587,9 @@
(same? expected)))
(_.coverage [/.type_of]
(same? /.Nat (/.type_of expected)))
- (_.coverage [/.Primitive]
- (when (/.Primitive "foo" [expected/0 expected/1])
- {.#Primitive "foo" (list actual/0 actual/1)}
+ (_.coverage [/.Nominal]
+ (when (/.Nominal "foo" [expected/0 expected/1])
+ {.#Nominal "foo" (list actual/0 actual/1)}
(and (same? expected/0 actual/0)
(same? expected/1 actual/1))
diff --git a/stdlib/source/test/lux/data/collection/array.lux b/stdlib/source/test/lux/data/collection/array.lux
index bbffbd0a3..a923891aa 100644
--- a/stdlib/source/test/lux/data/collection/array.lux
+++ b/stdlib/source/test/lux/data/collection/array.lux
@@ -155,11 +155,11 @@
(_.coverage [!.empty !.size]
(n.= size (!.size (is (Array Nat)
(!.empty size)))))
- (_.coverage [!.primitive]
+ (_.coverage [!.nominal]
(when !.Array
(<| {.#Named (symbol !.Array)}
{.#UnivQ (list)}
- {.#Primitive !.primitive (list _)})
+ {.#Nominal !.nominal (list _)})
true
_
@@ -323,12 +323,12 @@
(_.coverage [/.empty /.size]
(n.= size (/.size (is (Array Nat)
(/.empty size)))))
- (_.coverage [/.primitive]
+ (_.coverage [/.nominal]
(when /.Array
(<| {.#Named (symbol /.Array)}
{.#Named (symbol !.Array)}
{.#UnivQ (list)}
- {.#Primitive /.primitive (list _)})
+ {.#Nominal /.nominal (list _)})
true
_
diff --git a/stdlib/source/test/lux/data/color.lux b/stdlib/source/test/lux/data/color.lux
index 7434e8c15..8198800e6 100644
--- a/stdlib/source/test/lux/data/color.lux
+++ b/stdlib/source/test/lux/data/color.lux
@@ -21,10 +21,12 @@
["_" property (.only Test)]]]]
[\\library
["[0]" / (.only)
- ["[0]" rgb]]]
+ ["[0]" rgb]
+ ["[0]" hsl]]]
["[0]" /
["[1][0]" rgb]
["[1][0]" cmyk]
+ ["[1][0]" hsl]
["[1][0]" named]
["[1][0]" terminal]])
@@ -63,14 +65,15 @@
(def rgb_error_margin
+1.8)
-(with_template [<field>]
- [(def (<field> color)
+(with_template [<name> <field>]
+ [(def <name>
(-> /.Color Frac)
- (let [[hue saturation luminance] (/.hsl color)]
- <field>))]
+ (|>> /.rgb
+ hsl.of_rgb
+ <field>))]
- [saturation]
- [luminance]
+ [saturation hsl.saturation]
+ [luminance hsl.luminance]
)
(def (encoding expected)
@@ -79,10 +82,6 @@
(_.coverage [/.rgb /.of_rgb]
(|> expected /.rgb /.of_rgb
(at /.equivalence = expected)))
- (_.coverage [/.HSL /.hsl /.of_hsl]
- (|> expected /.hsl /.of_hsl
- (distance/3 expected)
- (f.<= ..rgb_error_margin)))
(_.coverage [/.HSB /.hsb /.of_hsb]
(|> expected /.hsb /.of_hsb
(distance/3 expected)
@@ -215,6 +214,7 @@
/rgb.test
/cmyk.test
+ /hsl.test
/named.test
/terminal.test
))))
diff --git a/stdlib/source/test/lux/data/color/hsl.lux b/stdlib/source/test/lux/data/color/hsl.lux
new file mode 100644
index 000000000..b3221e03b
--- /dev/null
+++ b/stdlib/source/test/lux/data/color/hsl.lux
@@ -0,0 +1,89 @@
+(.require
+ [library
+ [lux (.except)
+ [abstract
+ [monad (.only do)]
+ [\\specification
+ ["[0]S" equivalence]]]
+ [control
+ ["[0]" try (.use "[1]#[0]" functor)]
+ ["[0]" exception]]
+ [math
+ ["[0]" random (.only Random)]
+ [number
+ ["f" frac]]]
+ [test
+ ["_" property (.only Test)]]]]
+ [\\library
+ ["[0]" / (.only)
+ [//
+ ["[0]" rgb]]]]
+ [//
+ ["[0]T" rgb]])
+
+(def .public value
+ (Random /.Value)
+ (random.one (|>> /.value try.maybe)
+ random.safe_frac))
+
+(def .public random
+ (Random /.HSL)
+ (do random.monad
+ [hue ..value
+ saturation ..value
+ luminance ..value]
+ (random.one (|>> try.maybe)
+ (in (/.hsl hue saturation luminance)))))
+
+(def .public test
+ Test
+ (<| (_.covering /._)
+ (do [! random.monad]
+ [expected_value ..value
+ expected_rgb rgbT.random
+ expected_hsl ..random])
+ (all _.and
+ (_.for [/.Value]
+ (all _.and
+ (_.coverage [/.value]
+ (|> expected_value
+ /.value
+ (try#each (f.= expected_value))
+ (try.else false)))
+ (_.coverage [/.least]
+ (when (/.value (f.+ +0.001 /.least))
+ {try.#Failure _} false
+ {try.#Success _} true))
+ (_.coverage [/.most]
+ (when (/.value (f.- +0.001 /.most))
+ {try.#Failure _} false
+ {try.#Success _} true))
+ (_.coverage [/.invalid]
+ (and (when (/.value (f.- +0.001 /.least))
+ {try.#Failure it} (exception.match? /.invalid it)
+ {try.#Success _} false)
+ (when (/.value (f.+ +0.001 /.most))
+ {try.#Failure it} (exception.match? /.invalid it)
+ {try.#Success _} false)))
+ ))
+ (_.for [/.HSL]
+ (all _.and
+ (_.for [/.equivalence]
+ (equivalenceS.spec /.equivalence ..random))
+
+ (_.coverage [/.hsl
+ /.hue /.saturation /.luminance]
+ (|> (/.hsl (/.hue expected_hsl) (/.saturation expected_hsl) (/.luminance expected_hsl))
+ (try#each (at /.equivalence = expected_hsl))
+ (try.else false)))
+ (_.coverage [/.of_rgb /.rgb]
+ (and (|> expected_rgb
+ /.of_rgb
+ /.rgb
+ (at rgb.equivalence = expected_rgb))
+ (|> expected_hsl
+ /.rgb
+ /.of_rgb
+ (at /.equivalence = expected_hsl))))
+ ))
+ )))
diff --git a/stdlib/source/test/lux/ffi.old.lux b/stdlib/source/test/lux/ffi.old.lux
index 5feb469ec..e3ea06d48 100644
--- a/stdlib/source/test/lux/ffi.old.lux
+++ b/stdlib/source/test/lux/ffi.old.lux
@@ -235,9 +235,9 @@
test/lux/ffi/TestInterface::current
(i.= (i.+ increase counter))))
(_.coverage [/.type]
- (and (type#= (Primitive "java.lang.Char")
+ (and (type#= (Nominal "java.lang.Char")
(/.type java/lang/Char))
- (type#= (Primitive "java.util.List" [(Primitive "java.lang.Byte")])
+ (type#= (Nominal "java.util.List" [(Nominal "java.lang.Byte")])
(/.type (java/util/List java/lang/Byte)))))
)))
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/inference.lux b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/inference.lux
index 21fb6b1df..0cfac766e 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/inference.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/inference.lux
@@ -63,11 +63,11 @@
configuration ($configuration.random 5)]
(in (//.state (//.info version host configuration)))))
-(def primitive
+(def nominal
(Random Type)
(do random.monad
[name (random.lower_cased 1)]
- (in {.#Primitive name (list)})))
+ (in {.#Nominal name (list)})))
(def analysis
//.Phase
@@ -103,7 +103,7 @@
[lux ..random_state
.let [state [/extension.#bundle (/extension/analysis.bundle ..eval)
/extension.#state lux]]
- expected ..primitive
+ expected ..nominal
name ($symbol.random 1 1)
[type/0 term/0] ..simple_parameter
arity (at ! each (n.% 10) random.nat)
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/module.lux b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/module.lux
index da666f219..26dd79c7b 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/module.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/module.lux
@@ -36,11 +36,11 @@
configuration ($configuration.random 5)]
(in (//.state (//.info version host configuration)))))
-(def primitive
+(def nominal
(Random Type)
(do random.monad
[name (random.lower_cased 1)]
- (in {.#Primitive name (list)})))
+ (in {.#Nominal name (list)})))
(def (new? hash it)
(-> Nat .Module Bit)
@@ -199,7 +199,7 @@
alias_name (random.lower_cased 3)
public? random.bit
- def_type ..primitive
+ def_type ..nominal
arity (at ! each (|>> (n.% 10) ++) random.nat)
labels|head (random.lower_cased 1)
labels|tail (|> (random.lower_cased 1)
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/type.lux b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/type.lux
index c6b2fcb7c..9699f635d 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/analysis/type.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/analysis/type.lux
@@ -35,11 +35,11 @@
configuration ($configuration.random 5)]
(in (//.state (//.info version host configuration)))))
-(def primitive
+(def nominal
(Random Type)
(do random.monad
[name (random.lower_cased 1)]
- (in {.#Primitive name (list)})))
+ (in {.#Nominal name (list)})))
(def .public test
Test
@@ -48,9 +48,9 @@
[lux ..random_state
.let [state [/extension.#bundle /extension.empty
/extension.#state lux]]
- expected ..primitive
+ expected ..nominal
dummy (random.only (|>> (type#= expected) not)
- ..primitive)
+ ..nominal)
module (random.lower_cased 1)]
(all _.and
(_.coverage [/.expecting /.inference]
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/phase/analysis/complex.lux b/stdlib/source/test/lux/meta/compiler/language/lux/phase/analysis/complex.lux
index 0fb6d9f54..829452717 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/phase/analysis/complex.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/phase/analysis/complex.lux
@@ -69,11 +69,11 @@
configuration ($configuration.random 5)]
(in (//analysis.state (//analysis.info version host configuration)))))
-(def primitive
+(def nominal
(Random Type)
(do random.monad
[name (random.lower_cased 1)]
- (in {.#Primitive name (list)})))
+ (in {.#Nominal name (list)})))
(def analysis
//analysis.Phase
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
index 8d9aebda6..258333074 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except i64 int primitive)
+ [lux (.except i64 int)
[abstract
["[0]" monad (.only do)]]
[data
diff --git a/stdlib/source/test/lux/meta/target/jvm.lux b/stdlib/source/test/lux/meta/target/jvm.lux
index b5039dcaf..514eecf1f 100644
--- a/stdlib/source/test/lux/meta/target/jvm.lux
+++ b/stdlib/source/test/lux/meta/target/jvm.lux
@@ -1,6 +1,6 @@
(.require
[library
- [lux (.except Type Primitive Label int)
+ [lux (.except Type Label int)
["[0]" ffi (.only import)]
[abstract
["[0]" monad (.only do)]]
diff --git a/stdlib/source/test/lux/meta/type.lux b/stdlib/source/test/lux/meta/type.lux
index 50cccc419..8c7e6cd9c 100644
--- a/stdlib/source/test/lux/meta/type.lux
+++ b/stdlib/source/test/lux/meta/type.lux
@@ -33,7 +33,7 @@
[\\library
["[0]" / (.use "[1]#[0]" equivalence)]]
["[0]" /
- ["[1][0]" primitive]
+ ["[1][0]" nominal]
["[1][0]" check]
["[1][0]" dynamic]
["[1][0]" implicit]
@@ -54,19 +54,19 @@
_
false)]))
-(def primitive
+(def nominal
(Random Type)
(|> (random.alpha_numeric 1)
(at random.monad each (function (_ name)
- {.#Primitive name (list)}))))
+ {.#Nominal name (list)}))))
(def test|matches
Test
(<| (_.for [\\parser.types_do_not_match])
(do [! random.monad]
- [expected ..primitive
+ [expected ..nominal
dummy (random.only (|>> (/#= expected) not)
- ..primitive)])
+ ..nominal)])
(all _.and
(_.coverage [\\parser.exactly]
(and (|> (\\parser.result (\\parser.exactly expected) expected)
@@ -99,9 +99,9 @@
(def test|aggregate
Test
(do [! random.monad]
- [expected_left ..primitive
- expected_middle ..primitive
- expected_right ..primitive]
+ [expected_left ..nominal
+ expected_middle ..nominal
+ expected_right ..nominal]
(`` (all _.and
(,, (with_template [<parser> <exception> <good_constructor> <bad_constructor>]
[(_.coverage [<parser> <exception>]
@@ -147,9 +147,9 @@
(def test|parameter
Test
(do random.monad
- [quantification ..primitive
- argument ..primitive
- not_parameter ..primitive
+ [quantification ..nominal
+ argument ..nominal
+ not_parameter ..nominal
parameter random.nat]
(all _.and
(_.coverage [\\parser.not_parameter]
@@ -208,7 +208,7 @@
(def test|polymorphic
Test
(do [! random.monad]
- [not_polymorphic ..primitive
+ [not_polymorphic ..nominal
expected_inputs (at ! each (|>> (n.% 10) ++) random.nat)]
(all _.and
(_.coverage [\\parser.not_polymorphic]
@@ -231,7 +231,7 @@
(def test|recursive
Test
(do random.monad
- [expected ..primitive]
+ [expected ..nominal]
(all _.and
(_.coverage [\\parser.recursive]
(|> (.type_literal (Rec @ expected))
@@ -264,13 +264,13 @@
(_.for [\\parser.Parser])
(all _.and
(do [! random.monad]
- [expected ..primitive]
+ [expected ..nominal]
(_.coverage [\\parser.result \\parser.any]
(|> (\\parser.result \\parser.any expected)
(!expect (^.multi {try.#Success actual}
(/#= expected actual))))))
(do [! random.monad]
- [expected ..primitive]
+ [expected ..nominal]
(_.coverage [\\parser.next \\parser.unconsumed_input]
(and (|> (\\parser.result (do <>.monad
[actual \\parser.next
@@ -283,7 +283,7 @@
(!expect (^.multi {try.#Failure error}
(exception.match? \\parser.unconsumed_input error)))))))
(do [! random.monad]
- [expected ..primitive]
+ [expected ..nominal]
(_.coverage [\\parser.empty_input]
(`` (and (,, (with_template [<parser>]
[(|> (\\parser.result (do <>.monad
@@ -297,7 +297,7 @@
[\\parser.next]
))))))
(do [! random.monad]
- [expected ..primitive]
+ [expected ..nominal]
(_.coverage [\\parser.Env \\parser.env \\parser.fresh]
(|> (\\parser.result (do <>.monad
[env \\parser.env
@@ -307,9 +307,9 @@
(!expect (^.multi {try.#Success environment}
(same? \\parser.fresh environment))))))
(do [! random.monad]
- [expected ..primitive
+ [expected ..nominal
dummy (random.only (|>> (/#= expected) not)
- ..primitive)]
+ ..nominal)]
(_.coverage [\\parser.local]
(|> (\\parser.result (do <>.monad
[_ \\parser.any]
@@ -328,7 +328,7 @@
(do [! random.monad]
[expected_name (random.and (random.alpha_numeric 1)
(random.alpha_numeric 1))
- expected_type ..primitive]
+ expected_type ..nominal]
(_.coverage [\\parser.named \\parser.not_named]
(|> (\\parser.result \\parser.named
{.#Named expected_name expected_type})
@@ -359,9 +359,9 @@
(let [pairG (random.and again again)
un_parameterized (is (Random Type)
(all random.either
- (random#each (|>> {.#Primitive}) (random.and ..short (random.list 0 again)))
- (random#each (|>> {.#Primitive}) (random.and ..short (random.list 1 again)))
- (random#each (|>> {.#Primitive}) (random.and ..short (random.list 2 again)))
+ (random#each (|>> {.#Nominal}) (random.and ..short (random.list 0 again)))
+ (random#each (|>> {.#Nominal}) (random.and ..short (random.list 1 again)))
+ (random#each (|>> {.#Nominal}) (random.and ..short (random.list 2 again)))
(random#each (|>> {.#Sum}) pairG)
(random#each (|>> {.#Product}) pairG)
(random#each (|>> {.#Function}) pairG)
@@ -491,8 +491,8 @@
element_type (|> (..random 0)
(random.only (function (_ type)
(when type
- {.#Primitive name (list element_type)}
- (not (text#= array.primitive name))
+ {.#Nominal name (list element_type)}
+ (not (text#= array.nominal name))
_
true))))
@@ -563,7 +563,7 @@
..\\parser
- /primitive.test
+ /nominal.test
/check.test
/dynamic.test
/implicit.test
diff --git a/stdlib/source/test/lux/meta/type/check.lux b/stdlib/source/test/lux/meta/type/check.lux
index 05b6dcba4..5fd953e73 100644
--- a/stdlib/source/test/lux/meta/type/check.lux
+++ b/stdlib/source/test/lux/meta/type/check.lux
@@ -61,7 +61,7 @@
random_quantified (random.either (random#each (|>> {.#UnivQ}) quantifiedG)
(random#each (|>> {.#ExQ}) quantifiedG))]
(all random.either
- (random#each (|>> {.#Primitive}) (random.and ..short (random#in (list))))
+ (random#each (|>> {.#Nominal}) (random.and ..short (random#in (list))))
random_pair
random_id
random_quantified
@@ -75,7 +75,7 @@
(def (valid_type? type)
(-> Type Bit)
(when type
- {.#Primitive name params}
+ {.#Nominal name params}
(list.every? valid_type? params)
{.#Ex id}
@@ -118,16 +118,16 @@
($monad.spec ..injection ..comparison /.monad))
))
-(def (primitive_type parameters)
+(def (nominal_type parameters)
(-> Nat (Random Type))
(do random.monad
- [primitive (random.upper_cased 3)
- parameters (random.list parameters (primitive_type (-- parameters)))]
- (in {.#Primitive primitive parameters})))
+ [nominal (random.upper_cased 3)
+ parameters (random.list parameters (nominal_type (-- parameters)))]
+ (in {.#Nominal nominal parameters})))
(def clean_type
(Random Type)
- (primitive_type 2))
+ (nominal_type 2))
(exception.def yolo)
@@ -214,7 +214,7 @@
(when (/.result /.fresh_context
(do /.monad
[[var_id var_type] /.var
- _ (/.bind {.#Primitive nominal (list)}
+ _ (/.bind {.#Nominal nominal (list)}
var_id)]
(in true)))
{try.#Success _} true
@@ -225,7 +225,7 @@
(and (|> (do /.monad
[[var_id var_type] /.var
pre (/.bound? var_id)
- _ (/.bind {.#Primitive nominal (list)}
+ _ (/.bind {.#Nominal nominal (list)}
var_id)
post (/.bound? var_id)]
(in (and (not pre)
@@ -248,9 +248,9 @@
(when (/.result /.fresh_context
(do /.monad
[[var_id var_type] /.var
- _ (/.bind {.#Primitive nominal (list)}
+ _ (/.bind {.#Nominal nominal (list)}
var_id)]
- (/.bind {.#Primitive nominal (list)}
+ (/.bind {.#Nominal nominal (list)}
var_id)))
{try.#Success _}
false
@@ -262,7 +262,7 @@
var_id random.nat]
(_.coverage [/.unknown_type_var]
(when (/.result /.fresh_context
- (/.bind {.#Primitive nominal (list)}
+ (/.bind {.#Nominal nominal (list)}
var_id))
{try.#Success _}
false
@@ -271,7 +271,7 @@
(exception.match? /.unknown_type_var error))))
(do random.monad
[nominal (random.upper_cased 10)
- .let [expected {.#Primitive nominal (list)}]]
+ .let [expected {.#Nominal nominal (list)}]]
(_.coverage [/.peek]
(and (|> (do /.monad
[[var_id var_type] /.var]
@@ -299,7 +299,7 @@
false)))))
(do random.monad
[nominal (random.upper_cased 10)
- .let [expected {.#Primitive nominal (list)}]]
+ .let [expected {.#Nominal nominal (list)}]]
(_.coverage [/.read]
(when (/.result /.fresh_context
(do /.monad
@@ -313,7 +313,7 @@
false)))
(do random.monad
[nominal (random.upper_cased 10)
- .let [expected {.#Primitive nominal (list)}]]
+ .let [expected {.#Nominal nominal (list)}]]
(_.coverage [/.unbound_type_var]
(when (/.result /.fresh_context
(do /.monad
@@ -383,7 +383,7 @@
(Random Type)
(do random.monad
[name (random.upper_cased 10)]
- (in {.#Primitive name (list)})))
+ (in {.#Nominal name (list)})))
(def (non_twins = random)
(All (_ a) (-> (-> a a Bit) (Random a) (Random [a a])))
@@ -401,22 +401,22 @@
(def (handles_nominal_types! name/0 name/1 parameter/0 parameter/1)
(-> Text Text Type Type Bit)
(let [names_matter!
- (and (..succeeds? (/.check {.#Primitive name/0 (list)}
- {.#Primitive name/0 (list)}))
- (..fails? (/.check {.#Primitive name/0 (list)}
- {.#Primitive name/1 (list)})))
+ (and (..succeeds? (/.check {.#Nominal name/0 (list)}
+ {.#Nominal name/0 (list)}))
+ (..fails? (/.check {.#Nominal name/0 (list)}
+ {.#Nominal name/1 (list)})))
parameters_matter!
- (and (..succeeds? (/.check {.#Primitive name/0 (list parameter/0)}
- {.#Primitive name/0 (list parameter/0)}))
- (..fails? (/.check {.#Primitive name/0 (list parameter/0)}
- {.#Primitive name/0 (list parameter/1)})))
+ (and (..succeeds? (/.check {.#Nominal name/0 (list parameter/0)}
+ {.#Nominal name/0 (list parameter/0)}))
+ (..fails? (/.check {.#Nominal name/0 (list parameter/0)}
+ {.#Nominal name/0 (list parameter/1)})))
covariant_parameters!
- (and (..succeeds? (/.check {.#Primitive name/0 (list Super)}
- {.#Primitive name/0 (list Sub)}))
- (..fails? (/.check {.#Primitive name/0 (list Sub)}
- {.#Primitive name/0 (list Super)})))]
+ (and (..succeeds? (/.check {.#Nominal name/0 (list Super)}
+ {.#Nominal name/0 (list Sub)}))
+ (..fails? (/.check {.#Nominal name/0 (list Sub)}
+ {.#Nominal name/0 (list Super)})))]
(and names_matter!
parameters_matter!
covariant_parameters!)))
@@ -424,8 +424,8 @@
(with_template [<assertion> <combinator>]
[(def (<assertion> name/0 name/1)
(-> Text Text Bit)
- (let [pair/0 {<combinator> {.#Primitive name/0 (list)} {.#Primitive name/0 (list)}}
- pair/1 {<combinator> {.#Primitive name/1 (list)} {.#Primitive name/1 (list)}}
+ (let [pair/0 {<combinator> {.#Nominal name/0 (list)} {.#Nominal name/0 (list)}}
+ pair/1 {<combinator> {.#Nominal name/1 (list)} {.#Nominal name/1 (list)}}
invariant!
(and (..succeeds? (/.check pair/0 pair/0))
@@ -713,7 +713,7 @@
[name (random.upper_cased 10)
parameterT dirty_type]
(in (function (_ holeT)
- {.#Primitive name (list (parameterT holeT))})))
+ {.#Nominal name (list (parameterT holeT))})))
(,, (with_template [<tag>]
[(do [! random.monad]
[funcT dirty_type
@@ -765,18 +765,18 @@
(def for_subsumption|nominal
(Random Bit)
(do random.monad
- [primitive (random.upper_cased 10)
+ [nominal (random.upper_cased 10)
example ..clean_type]
- (in (and (/.subsumes? {.#Primitive primitive (list)}
- {.#Primitive primitive (list)})
- (/.subsumes? {.#Primitive primitive (list .Any)}
- {.#Primitive primitive (list example)})
- (not (/.subsumes? {.#Primitive primitive (list example)}
- {.#Primitive primitive (list .Any)}))
- (/.subsumes? {.#Primitive primitive (list example)}
- {.#Primitive primitive (list .Nothing)})
- (not (/.subsumes? {.#Primitive primitive (list .Nothing)}
- {.#Primitive primitive (list example)}))
+ (in (and (/.subsumes? {.#Nominal nominal (list)}
+ {.#Nominal nominal (list)})
+ (/.subsumes? {.#Nominal nominal (list .Any)}
+ {.#Nominal nominal (list example)})
+ (not (/.subsumes? {.#Nominal nominal (list example)}
+ {.#Nominal nominal (list .Any)}))
+ (/.subsumes? {.#Nominal nominal (list example)}
+ {.#Nominal nominal (list .Nothing)})
+ (not (/.subsumes? {.#Nominal nominal (list .Nothing)}
+ {.#Nominal nominal (list example)}))
))))
(def for_subsumption|sum
diff --git a/stdlib/source/test/lux/meta/type/primitive.lux b/stdlib/source/test/lux/meta/type/nominal.lux
index c0bf30297..c0bf30297 100644
--- a/stdlib/source/test/lux/meta/type/primitive.lux
+++ b/stdlib/source/test/lux/meta/type/nominal.lux
diff --git a/stdlib/source/test/lux/world/net.lux b/stdlib/source/test/lux/world/net.lux
index ddcd8dcfd..13fb27295 100644
--- a/stdlib/source/test/lux/world/net.lux
+++ b/stdlib/source/test/lux/world/net.lux
@@ -24,7 +24,8 @@
true)
(_.coverage [/.URL]
true)
- (_.coverage [/.Address]
+ (_.coverage [/.Address
+ /.#host /.#port]
true)
/mime.test
diff --git a/stdlib/source/unsafe/lux/data/binary.lux b/stdlib/source/unsafe/lux/data/binary.lux
index 83a6df975..fd68e39e0 100644
--- a/stdlib/source/unsafe/lux/data/binary.lux
+++ b/stdlib/source/unsafe/lux/data/binary.lux
@@ -43,11 +43,11 @@
@.python
(type .public Binary
- (Primitive "bytearray"))
+ (Nominal "bytearray"))
@.scheme
(these (type .public Binary
- (Primitive "bytevector"))
+ (Nominal "bytevector"))
(ffi.import (make-bytevector [Nat] Binary))
(ffi.import (bytevector-u8-ref [Binary Nat] I64))
@@ -201,7 +201,7 @@
(.as .Int <value>)
(,, (.static @.jvm))
- (.as (.Primitive "java.lang.Long") <value>)
+ (.as (.Nominal "java.lang.Long") <value>)
<value>))
<jvm_value> <jvm_value>
<jvm_value> (ffi.long_to_byte <jvm_value>)
diff --git a/stdlib/source/unsafe/lux/data/collection/array.lux b/stdlib/source/unsafe/lux/data/collection/array.lux
index 8c1d0ce47..184be69cf 100644
--- a/stdlib/source/unsafe/lux/data/collection/array.lux
+++ b/stdlib/source/unsafe/lux/data/collection/array.lux
@@ -11,19 +11,19 @@
[type
["[0]" variance]]]]])
-(def .public primitive
+(def .public nominal
"#Array")
(with_template [<item> <array>]
[(.type .public <array>
- {.#Primitive ..primitive {.#Item <item> {.#End}}})]
+ {.#Nominal ..nominal {.#Item <item> {.#End}}})]
[(variance.Mutable r w) (Array' r w)]
[(variance.Mutable a a) (Array a)]
)
-(with_expansions [<index_type> (.Primitive "java.lang.Long")
- <item_type> (.Primitive "java.lang.Object")]
+(with_expansions [<index_type> (.Nominal "java.lang.Long")
+ <item_type> (.Nominal "java.lang.Object")]
(for @.jvm (def jvm_int
(template (jvm_int value)
[(.|> value