aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux.lux
diff options
context:
space:
mode:
authorEduardo Julian2019-05-24 21:22:48 -0400
committerEduardo Julian2019-05-24 21:22:48 -0400
commit1c2e2b58bca4e837bed6d701fe16be092be828a3 (patch)
tree1b5d8b4c9baa6f47c6b2051c81305f1f8279b1ba /stdlib/source/lux.lux
parent9cdc2f44cbcf4e0a627216d295b5f05bd817d6a8 (diff)
Removed the (magical) "export?" annotations tag.
Diffstat (limited to 'stdlib/source/lux.lux')
-rw-r--r--stdlib/source/lux.lux524
1 files changed, 256 insertions, 268 deletions
diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux
index 91ee40db9..9e370f12b 100644
--- a/stdlib/source/lux.lux
+++ b/stdlib/source/lux.lux
@@ -1,21 +1,22 @@
("lux def" dummy-cursor
["" 0 0]
- [["" 0 0]
- (10 (1 [[["" 0 0] (7 ["lux" "export?"])]
- [["" 0 0] (0 #1)]]
- (0)))])
+ [["" 0 0] (10 (0))]
+ #1)
("lux def" double-quote
("lux i64 char" +34)
- [dummy-cursor (10 (0))])
+ [dummy-cursor (10 (0))]
+ #0)
("lux def" new-line
("lux i64 char" +10)
- [dummy-cursor (10 (0))])
+ [dummy-cursor (10 (0))]
+ #0)
("lux def" __paragraph
("lux text concat" new-line new-line)
- [dummy-cursor (10 (0))])
+ [dummy-cursor (10 (0))]
+ #0)
## (type: Any
## (Ex [a] a))
@@ -24,13 +25,12 @@
(10 ["lux" "Any"]
(8 (0) (4 1))))
[dummy-cursor
- (10 (1 [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (1 [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 ("lux text concat"
- ("lux text concat" "The type of things whose type is irrelevant." __paragraph)
- "It can be used to write functions or data-structures that can take, or return, anything."))]]
- (0))))])
+ (10 (1 [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 ("lux text concat"
+ ("lux text concat" "The type of things whose type is irrelevant." __paragraph)
+ "It can be used to write functions or data-structures that can take, or return, anything."))]]
+ (0)))]
+ #1)
## (type: Nothing
## (All [a] a))
@@ -39,13 +39,12 @@
(10 ["lux" "Nothing"]
(7 (0) (4 1))))
[dummy-cursor
- (10 (1 [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (1 [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 ("lux text concat"
- ("lux text concat" "The type of things whose type is undefined." __paragraph)
- "Useful for expressions that cause errors or other 'extraordinary' conditions."))]]
- (0))))])
+ (10 (1 [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 ("lux text concat"
+ ("lux text concat" "The type of things whose type is undefined." __paragraph)
+ "Useful for expressions that cause errors or other 'extraordinary' conditions."))]]
+ (0)))]
+ #1)
## (type: (List a)
## #Nil
@@ -59,25 +58,23 @@
(2 (4 1)
(9 (4 1) (4 0))))))
[dummy-cursor
- (10 (1 [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (1 [[dummy-cursor (7 ["lux" "type-args"])]
- [dummy-cursor (9 (1 [dummy-cursor (5 "a")] (0)))]]
- (1 [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "A potentially empty list of values.")]]
- (0)))))]
- ["Nil" "Cons"])
+ (10 (1 [[dummy-cursor (7 ["lux" "type-args"])]
+ [dummy-cursor (9 (1 [dummy-cursor (5 "a")] (0)))]]
+ (1 [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "A potentially empty list of values.")]]
+ (0))))]
+ ["Nil" "Cons"]
+ #1)
("lux def" Bit
("lux check type"
(10 ["lux" "Bit"]
(0 "#Bit" #Nil)))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "Your standard, run-of-the-mill boolean values (as bits).")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "Your standard, run-of-the-mill boolean values (as bits).")]]
+ #Nil))]
+ #1)
("lux def" I64
("lux check type"
@@ -85,81 +82,74 @@
(7 (0)
(0 "#I64" (#Cons (4 1) #Nil)))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "64-bit integers without any semantics.")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "64-bit integers without any semantics.")]]
+ #Nil))]
+ #1)
("lux def" Nat
("lux check type"
(10 ["lux" "Nat"]
(0 "#I64" (#Cons (0 "#Nat" #Nil) #Nil))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 ("lux text concat"
- ("lux text concat" "Natural numbers (unsigned integers)." __paragraph)
- "They start at zero (0) and extend in the positive direction."))]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 ("lux text concat"
+ ("lux text concat" "Natural numbers (unsigned integers)." __paragraph)
+ "They start at zero (0) and extend in the positive direction."))]]
+ #Nil))]
+ #1)
("lux def" Int
("lux check type"
(10 ["lux" "Int"]
(0 "#I64" (#Cons (0 "#Int" #Nil) #Nil))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "Your standard, run-of-the-mill integer numbers.")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "Your standard, run-of-the-mill integer numbers.")]]
+ #Nil))]
+ #1)
("lux def" Rev
("lux check type"
(10 ["lux" "Rev"]
(0 "#I64" (#Cons (0 "#Rev" #Nil) #Nil))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 ("lux text concat"
- ("lux text concat" "Fractional numbers that live in the interval [0,1)." __paragraph)
- "Useful for probability, and other domains that work within that interval."))]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 ("lux text concat"
+ ("lux text concat" "Fractional numbers that live in the interval [0,1)." __paragraph)
+ "Useful for probability, and other domains that work within that interval."))]]
+ #Nil))]
+ #1)
("lux def" Frac
("lux check type"
(10 ["lux" "Frac"]
(0 "#Frac" #Nil)))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "Your standard, run-of-the-mill floating-point (fractional) numbers.")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "Your standard, run-of-the-mill floating-point (fractional) numbers.")]]
+ #Nil))]
+ #1)
("lux def" Text
("lux check type"
(10 ["lux" "Text"]
(0 "#Text" #Nil)))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "Your standard, run-of-the-mill string values.")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "Your standard, run-of-the-mill string values.")]]
+ #Nil))]
+ #1)
("lux def" Name
("lux check type"
(10 ["lux" "Name"]
(2 Text Text)))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "A name. It is used as part of Lux syntax to represent identifiers and tags.")]]
- #Nil)))])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "A name. It is used as part of Lux syntax to represent identifiers and tags.")]]
+ #Nil))]
+ #1)
## (type: (Maybe a)
## #None
@@ -172,14 +162,13 @@
## "lux.Some"
(4 1))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "type-args"])]
- [dummy-cursor (9 (#Cons [dummy-cursor (5 "a")] #Nil))]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "A potentially missing value.")]]
- #Nil))))]
- ["None" "Some"])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "type-args"])]
+ [dummy-cursor (9 (#Cons [dummy-cursor (5 "a")] #Nil))]]
+ (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "A potentially missing value.")]]
+ #Nil)))]
+ ["None" "Some"]
+ #1)
## (type: #rec Type
## (#Primitive Text (List Type))
@@ -227,14 +216,13 @@
("lux check type" (9 Type List)))}
("lux check type" (9 (4 1) (4 0)))))
[dummy-cursor
- (10 (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- (#Cons [[dummy-cursor (7 ["lux" "doc"])]
- [dummy-cursor (5 "This type represents the data-structures that are used to specify types themselves.")]]
- (#Cons [[dummy-cursor (7 ["lux" "type-rec?"])]
- [dummy-cursor (0 #1)]]
- #Nil))))]
- ["Primitive" "Sum" "Product" "Function" "Parameter" "Var" "Ex" "UnivQ" "ExQ" "Apply" "Named"])
+ (10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
+ [dummy-cursor (5 "This type represents the data-structures that are used to specify types themselves.")]]
+ (#Cons [[dummy-cursor (7 ["lux" "type-rec?"])]
+ [dummy-cursor (0 #1)]]
+ #Nil)))]
+ ["Primitive" "Sum" "Product" "Function" "Parameter" "Var" "Ex" "UnivQ" "ExQ" "Apply" "Named"]
+ #1)
## (type: Cursor
## {#module Text
@@ -246,10 +234,9 @@
[dummy-cursor
(10 (#Cons [[dummy-cursor (7 ["lux" "doc"])]
[dummy-cursor (5 "Cursors are for specifying the location of Code nodes in Lux files during compilation.")]]
- (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- #Nil)))]
- ["module" "line" "column"])
+ #Nil))]
+ ["module" "line" "column"]
+ #1)
## (type: (Ann m v)
## {#meta m
@@ -265,10 +252,9 @@
[dummy-cursor (5 "The type of things that can be annotated with meta-data of arbitrary types.")]]
(#Cons [[dummy-cursor (7 ["lux" "type-args"])]
[dummy-cursor (9 (#Cons [dummy-cursor (5 "m")] (#Cons [dummy-cursor (5 "v")] #Nil)))]]
- (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- #Nil))))]
- ["meta" "datum"])
+ #Nil)))]
+ ["meta" "datum"]
+ #1)
## (type: (Code' w)
## (#Bit Bit)
@@ -318,10 +304,9 @@
[dummy-cursor
(10 (#Cons [[dummy-cursor (7 ["lux" "type-args"])]
[dummy-cursor (9 (#Cons [dummy-cursor (5 "w")] #Nil))]]
- (#Cons [[dummy-cursor (7 ["lux" "export?"])]
- [dummy-cursor (0 #1)]]
- #Nil)))]
- ["Bit" "Nat" "Int" "Rev" "Frac" "Text" "Identifier" "Tag" "Form" "Tuple" "Record"])
+ #Nil))]
+ ["Bit" "Nat" "Int" "Rev" "Frac" "Text" "Identifier" "Tag" "Form" "Tuple" "Record"]
+ #1)
## (type: Code
## (Ann Cursor (Code' (Ann Cursor))))
@@ -333,9 +318,8 @@
[dummy-cursor
(#Record (#Cons [[dummy-cursor (#Tag ["lux" "doc"])]
[dummy-cursor (#Text "The type of Code nodes for Lux syntax.")]]
- (#Cons [[dummy-cursor (#Tag ["lux" "export?"])]
- [dummy-cursor (#Bit #1)]]
- #Nil)))])
+ #Nil))]
+ #1)
("lux def" _ann
("lux check" (#Function (#Apply (#Apply Cursor Ann)
@@ -343,89 +327,97 @@
Code)
([_ data]
[dummy-cursor data]))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" bit$
("lux check" (#Function Bit Code)
([_ value] (_ann (#Bit value))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" nat$
("lux check" (#Function Nat Code)
([_ value] (_ann (#Nat value))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" int$
("lux check" (#Function Int Code)
([_ value] (_ann (#Int value))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" rev$
("lux check" (#Function Rev Code)
([_ value] (_ann (#Rev value))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" frac$
("lux check" (#Function Frac Code)
([_ value] (_ann (#Frac value))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" text$
("lux check" (#Function Text Code)
([_ text] (_ann (#Text text))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" identifier$
("lux check" (#Function Name Code)
([_ name] (_ann (#Identifier name))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" local-identifier$
("lux check" (#Function Text Code)
([_ name] (_ann (#Identifier ["" name]))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" tag$
("lux check" (#Function Name Code)
([_ name] (_ann (#Tag name))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" local-tag$
("lux check" (#Function Text Code)
([_ name] (_ann (#Tag ["" name]))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" form$
("lux check" (#Function (#Apply Code List) Code)
([_ tokens] (_ann (#Form tokens))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" tuple$
("lux check" (#Function (#Apply Code List) Code)
([_ tokens] (_ann (#Tuple tokens))))
- [dummy-cursor (#Record #Nil)])
+ [dummy-cursor (#Record #Nil)]
+ #0)
("lux def" record$
("lux check" (#Function (#Apply (#Product Code Code) List) Code)
([_ tokens] (_ann (#Record tokens))))
- [dummy-cursor (#Record #Nil)])
-
-("lux def" default-def-meta-exported
- ("lux check" (#Apply (#Product Code Code) List)
- (#Cons [(tag$ ["lux" "export?"])
- (bit$ #1)]
- #Nil))
- (record$ #Nil))
+ [dummy-cursor (#Record #Nil)]
+ #0)
## (type: Definition
-## [Type Code Any])
+## [Bit Type Code Any])
("lux def" Definition
("lux check type"
(#Named ["lux" "Definition"]
- (#Product Type (#Product Code Any))))
+ (#Product Bit (#Product Type (#Product Code Any)))))
(record$ (#Cons [(tag$ ["lux" "doc"])
(text$ "Represents all the data associated with a definition: its type, its annotations, and its value.")]
- default-def-meta-exported)))
+ #Nil))
+ #1)
## (type: (Bindings k v)
## {#counter Nat
@@ -442,8 +434,9 @@
List)))))
(record$ (#Cons [(tag$ ["lux" "type-args"])
(tuple$ (#Cons (text$ "k") (#Cons (text$ "v") #Nil)))]
- default-def-meta-exported))
- ["counter" "mappings"])
+ #Nil))
+ ["counter" "mappings"]
+ #1)
## (type: #export Ref
## (#Local Nat)
@@ -454,8 +447,9 @@
Nat
## Captured
Nat))
- (record$ default-def-meta-exported)
- ["Local" "Captured"])
+ (record$ #Nil)
+ ["Local" "Captured"]
+ #1)
## (type: Scope
## {#name (List Text)
@@ -472,13 +466,15 @@
(#Apply (#Product Type Nat) (#Apply Text Bindings))
## captured
(#Apply (#Product Type Ref) (#Apply Text Bindings))))))
- (record$ default-def-meta-exported)
- ["name" "inner" "locals" "captured"])
+ (record$ #Nil)
+ ["name" "inner" "locals" "captured"]
+ #1)
("lux def" Code-List
("lux check type"
(#Apply Code List))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
## (type: (Either l r)
## (#Left l)
@@ -495,8 +491,9 @@
(tuple$ (#Cons (text$ "l") (#Cons (text$ "r") #Nil)))]
(#Cons [(tag$ ["lux" "doc"])
(text$ "A choice between two values of different types.")]
- default-def-meta-exported)))
- ["Left" "Right"])
+ #Nil)))
+ ["Left" "Right"]
+ #1)
## (type: Source
## [Cursor Nat Text])
@@ -504,7 +501,8 @@
("lux check type"
(#Named ["lux" "Source"]
(#Product Cursor (#Product Nat Text))))
- (record$ default-def-meta-exported))
+ (record$ #Nil)
+ #1)
## (type: Module-State
## #Active
@@ -520,8 +518,9 @@
Any
## #Cached
Any)))
- (record$ default-def-meta-exported)
- ["Active" "Compiled" "Cached"])
+ (record$ #Nil)
+ ["Active" "Compiled" "Cached"]
+ #1)
## (type: Module
## {#module-hash Nat
@@ -561,8 +560,9 @@
))))))
(record$ (#Cons [(tag$ ["lux" "doc"])
(text$ "All the information contained within a Lux module.")]
- default-def-meta-exported))
- ["module-hash" "module-aliases" "definitions" "imports" "tags" "types" "module-annotations" "module-state"])
+ #Nil))
+ ["module-hash" "module-aliases" "definitions" "imports" "tags" "types" "module-annotations" "module-state"]
+ #1)
## (type: Type-Context
## {#ex-counter Nat
@@ -577,8 +577,9 @@
## var-bindings
(#Apply (#Product Nat (#Apply Type Maybe))
List))))
- (record$ default-def-meta-exported)
- ["ex-counter" "var-counter" "var-bindings"])
+ (record$ #Nil)
+ ["ex-counter" "var-counter" "var-bindings"]
+ #1)
## (type: Mode
## #Build
@@ -594,8 +595,9 @@
Any)))
(record$ (#Cons [(tag$ ["lux" "doc"])
(text$ "A sign that shows the conditions under which the compiler is running.")]
- default-def-meta-exported))
- ["Build" "Eval" "Interpreter"])
+ #Nil))
+ ["Build" "Eval" "Interpreter"]
+ #1)
## (type: Info
## {#target Text
@@ -613,8 +615,9 @@
Mode)))
(record$ (#Cons [(tag$ ["lux" "doc"])
(text$ "Information about the current version and type of compiler that is running.")]
- default-def-meta-exported))
- ["target" "version" "mode"])
+ #Nil))
+ ["target" "version" "mode"]
+ #1)
## (type: Lux
## {#info Info
@@ -661,8 +664,9 @@
("lux text concat"
("lux text concat" "It is provided to macros during their invocation, so they can access compiler data." __paragraph)
"Caveat emptor: Avoid fiddling with it, unless you know what you're doing.")))]
- default-def-meta-exported))
- ["info" "source" "cursor" "current-module" "modules" "scopes" "type-context" "expected" "seed" "scope-type-vars" "extensions" "host"])
+ #Nil))
+ ["info" "source" "cursor" "current-module" "modules" "scopes" "type-context" "expected" "seed" "scope-type-vars" "extensions" "host"]
+ #1)
## (type: (Meta a)
## (-> Lux (Either Text [Lux a])))
@@ -679,7 +683,8 @@
"These computations may fail, or modify the state of the compiler."))]
(#Cons [(tag$ ["lux" "type-args"])
(tuple$ (#Cons (text$ "a") #Nil))]
- default-def-meta-exported))))
+ #Nil)))
+ #1)
## (type: Macro'
## (-> (List Code) (Meta (List Code))))
@@ -687,7 +692,8 @@
("lux check type"
(#Named ["lux" "Macro'"]
(#Function Code-List (#Apply Code-List Meta))))
- (record$ default-def-meta-exported))
+ (record$ #Nil)
+ #1)
## (type: Macro
## (primitive "#Macro"))
@@ -697,7 +703,8 @@
(#Primitive "#Macro" #Nil)))
(record$ (#Cons [(tag$ ["lux" "doc"])
(text$ "Functions that run at compile-time and allow you to transform and extend the language in powerful ways.")]
- default-def-meta-exported)))
+ #Nil))
+ #1)
## Base functions & macros
("lux def" return
@@ -710,7 +717,8 @@
([_ val]
([_ state]
(#Right state val))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" fail
("lux check" (#UnivQ #Nil
@@ -722,7 +730,8 @@
([_ msg]
([_ state]
(#Left msg))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" let''
("lux macro"
@@ -734,7 +743,8 @@
_
(fail "Wrong syntax for let''")}
tokens)))
- (record$ #.Nil))
+ (record$ #.Nil)
+ #0)
("lux def" function''
("lux macro"
@@ -770,12 +780,14 @@
_
(fail "Wrong syntax for function''")}
tokens)))
- (record$ #.Nil))
+ (record$ #.Nil)
+ #0)
("lux def" cursor-code
("lux check" Code
(tuple$ (#Cons (text$ "") (#Cons (nat$ 0) (#Cons (nat$ 0) #Nil)))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" meta-code
("lux check" (#Function Name (#Function Code Code))
@@ -784,7 +796,8 @@
(tuple$ (#Cons cursor-code
(#Cons (form$ (#Cons (tag$ tag) (#Cons value #Nil)))
#Nil))))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" flag-meta
("lux check" (#Function Text Code)
@@ -792,42 +805,28 @@
(tuple$ (#Cons [(meta-code ["lux" "Tag"] (tuple$ (#Cons (text$ "lux") (#Cons (text$ tag) #Nil))))
(#Cons [(meta-code ["lux" "Bit"] (bit$ #1))
#Nil])]))))
- (record$ #Nil))
-
-("lux def" export-meta
- ("lux check" (#Product Code Code)
- [(tag$ ["lux" "export?"]) (bit$ #1)])
- (record$ #Nil))
-
-("lux def" export?-meta
- ("lux check" Code
- (flag-meta "export?"))
- (record$ #Nil))
-
-("lux def" with-export-meta
- ("lux check" (#Function Code Code)
- (function'' [tail]
- (form$ (#Cons (tag$ ["lux" "Cons"])
- (#Cons export?-meta
- (#Cons tail #Nil))))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" doc-meta
("lux check" (#Function Text (#Product Code Code))
(function'' [doc] [(tag$ ["lux" "doc"]) (text$ doc)]))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" as-def
- ("lux check" (#Function Code (#Function Code (#Function Code Code)))
- (function'' [name value annotations]
- (form$ (#Cons (text$ "lux def") (#Cons name (#Cons value (#Cons annotations #Nil)))))))
- (record$ #Nil))
+ ("lux check" (#Function Code (#Function Code (#Function Code (#Function Bit Code))))
+ (function'' [name value annotations exported?]
+ (form$ (#Cons (text$ "lux def") (#Cons name (#Cons value (#Cons annotations (#Cons (bit$ exported?) #Nil))))))))
+ (record$ #Nil)
+ #0)
("lux def" as-checked
("lux check" (#Function Code (#Function Code Code))
(function'' [type value]
(form$ (#Cons (text$ "lux check") (#Cons type (#Cons value #Nil))))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" as-function
("lux check" (#Function Code (#Function (#Apply Code List) (#Function Code Code)))
@@ -836,7 +835,8 @@
(#Cons self
(#Cons (tuple$ inputs)
(#Cons output #Nil)))))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" as-macro
("lux check" (#Function Code Code)
@@ -844,7 +844,8 @@
(form$ (#Cons (text$ "lux macro")
(#Cons expression
#Nil)))))
- (record$ #Nil))
+ (record$ #Nil)
+ #0)
("lux def" def:''
("lux macro"
@@ -854,15 +855,17 @@
(#Cons [meta (#Cons [type (#Cons [body #Nil])])])])])
(return (#Cons [(as-def name (as-checked type (as-function name args body))
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta meta)
- #Nil))))
+ (#Cons meta
+ #Nil)))
+ #1)
#Nil]))
(#Cons [[_ (#Tag ["" "export"])] (#Cons [name (#Cons [meta (#Cons [type (#Cons [body #Nil])])])])])
(return (#Cons [(as-def name (as-checked type body)
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta meta)
- #Nil))))
+ (#Cons meta
+ #Nil)))
+ #1)
#Nil]))
(#Cons [[_ (#Form (#Cons [name args]))]
@@ -870,20 +873,23 @@
(return (#Cons [(as-def name (as-checked type (as-function name args body))
(form$ (#Cons (identifier$ ["lux" "record$"])
(#Cons meta
- #Nil))))
+ #Nil)))
+ #0)
#Nil]))
(#Cons [name (#Cons [meta (#Cons [type (#Cons [body #Nil])])])])
(return (#Cons [(as-def name (as-checked type body)
(form$ (#Cons (identifier$ ["lux" "record$"])
(#Cons meta
- #Nil))))
+ #Nil)))
+ #0)
#Nil]))
_
(fail "Wrong syntax for def''")}
tokens)))
- (record$ #.Nil))
+ (record$ #.Nil)
+ #0)
("lux def" macro:'
("lux macro"
@@ -892,27 +898,31 @@
(return (#Cons (as-def name (as-macro (as-function name args body))
(form$ (#Cons (identifier$ ["lux" "record$"])
(#Cons (tag$ ["lux" "Nil"])
- #Nil))))
+ #Nil)))
+ #0)
#Nil))
(#Cons [_ (#Tag ["" "export"])] (#Cons [_ (#Form (#Cons name args))] (#Cons body #Nil)))
(return (#Cons (as-def name (as-macro (as-function name args body))
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta (tag$ ["lux" "Nil"]))
- #Nil))))
+ (#Cons (tag$ ["lux" "Nil"])
+ #Nil)))
+ #1)
#Nil))
(#Cons [_ (#Tag ["" "export"])] (#Cons [_ (#Form (#Cons name args))] (#Cons meta-data (#Cons body #Nil))))
(return (#Cons (as-def name (as-macro (as-function name args body))
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta meta-data)
- #Nil))))
+ (#Cons meta-data
+ #Nil)))
+ #1)
#Nil))
_
(fail "Wrong syntax for macro:'")}
tokens)))
- (record$ #.Nil))
+ (record$ #.Nil)
+ #0)
(macro:' #export (comment tokens)
(#Cons [(tag$ ["lux" "doc"])
@@ -1017,24 +1027,18 @@
syntax}
syntax))
-(def:'' (n/+ param subject)
- (#.Cons (doc-meta "Nat(ural) addition.")
- (#.Cons export-meta
- #.Nil))
+(def:'' #export (n/+ param subject)
+ (#.Cons (doc-meta "Nat(ural) addition.") #.Nil)
(#Function Nat (#Function Nat Nat))
("lux i64 +" subject param))
-(def:'' (n/- param subject)
- (#.Cons (doc-meta "Nat(ural) substraction.")
- (#.Cons export-meta
- #.Nil))
+(def:'' #export (n/- param subject)
+ (#.Cons (doc-meta "Nat(ural) substraction.") #.Nil)
(#Function Nat (#Function Nat Nat))
("lux i64 -" param subject))
-(def:'' (n/* param subject)
- (#.Cons (doc-meta "Nat(ural) multiplication.")
- (#.Cons export-meta
- #.Nil))
+(def:'' #export (n/* param subject)
+ (#.Cons (doc-meta "Nat(ural) multiplication.") #.Nil)
(#Function Nat (#Function Nat Nat))
("lux coerce" Nat
("lux i64 *"
@@ -1333,8 +1337,9 @@
(tuple$ args)
body))))
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta meta)
- #Nil)))))))
+ (#Cons meta
+ #Nil)))
+ (bit$ #1)))))
(#Cons [[_ (#Tag ["" "export"])] (#Cons [name (#Cons [meta (#Cons [type (#Cons [body #Nil])])])])])
(return (list (form$ (list (text$ "lux def")
@@ -1343,8 +1348,9 @@
type
body))
(form$ (#Cons (identifier$ ["lux" "record$"])
- (#Cons (with-export-meta meta)
- #Nil)))))))
+ (#Cons meta
+ #Nil)))
+ (bit$ #1)))))
(#Cons [[_ (#Form (#Cons [name args]))]
(#Cons [meta (#Cons [type (#Cons [body #Nil])])])])
@@ -1358,7 +1364,8 @@
body))))
(form$ (#Cons (identifier$ ["lux" "record$"])
(#Cons meta
- #Nil)))))))
+ #Nil)))
+ (bit$ #0)))))
(#Cons [name (#Cons [meta (#Cons [type (#Cons [body #Nil])])])])
(return (list (form$ (list (text$ "lux def")
@@ -1366,7 +1373,8 @@
(form$ (list (text$ "lux check") type body))
(form$ (#Cons (identifier$ ["lux" "record$"])
(#Cons meta
- #Nil)))))))
+ #Nil)))
+ (bit$ #0)))))
_
(fail "Wrong syntax for def:'''")}
@@ -1520,7 +1528,8 @@
($' m a)
($' m b))))))
(record$ (list))
- ["wrap" "bind"])
+ ["wrap" "bind"]
+ #0)
(def:''' maybe-monad
#Nil
@@ -1715,7 +1724,7 @@
#seed seed #expected expected #cursor cursor #extensions extensions
#scope-type-vars scope-type-vars} state]
({(#Some {#module-hash _ #module-aliases _ #definitions definitions #imports _ #tags tags #types types #module-annotations _ #module-state _})
- ({(#Some [def-type def-meta def-value])
+ ({(#Some [exported? def-type def-meta def-value])
({(#Some [_ (#Identifier real-name)])
(#Right [state real-name])
@@ -2518,26 +2527,19 @@
[$module (get module modules)
gdef (let' [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} ("lux check" Module $module)]
(get name bindings))]
- (let' [[def-type def-meta def-value] ("lux check" Definition gdef)]
- ({#1
- ({(#Some [_ (#Bit #1)])
+ (let' [[exported? def-type def-meta def-value] ("lux check" Definition gdef)]
+ (if (macro-type? def-type)
+ (if exported?
(#Some ("lux coerce" Macro def-value))
-
- _
(if (text@= module current-module)
(#Some ("lux coerce" Macro def-value))
- #None)}
- (get-meta ["lux" "export?"] def-meta))
-
- #0
+ #None))
({(#Some [_ (#Identifier [r-module r-name])])
(find-macro' modules current-module r-module r-name)
_
#None}
- (get-meta ["lux" "alias"] def-meta))}
- (macro-type? def-type)))
- ))
+ (get-meta ["lux" "alias"] def-meta))))))
(def:''' (normalize name)
#Nil
@@ -2913,11 +2915,11 @@
#None
body'}
?type)]
- (return (list (` ("lux def" (~ name) (~ body'')
+ (return (list (` ("lux def" (~ name)
+ (~ body'')
[(~ cursor-code)
- (#.Record (~ (if export?
- (with-export-meta (tag$ ["lux" "Nil"]))
- (tag$ ["lux" "Nil"]))))])))))
+ (#.Record #.Nil)]
+ (~ (bit$ export?)))))))
#None
(fail "Wrong syntax for def'")}
@@ -3253,7 +3255,7 @@
"(def: branching-exponent" ..new-line
" Int" ..new-line
" +5)"))])
- (let [[export? tokens'] (export^ tokens)
+ (let [[exported? tokens'] (export^ tokens)
parts (: (Maybe [Code (List Code) (Maybe Code) Code (List [Code Code])])
(case tokens'
(^ (list [_ (#Form (#Cons name args))] [_ (#Record meta-kvs)] type body))
@@ -3300,10 +3302,8 @@
(return (list (` ("lux def" (~ name)
(~ body)
[(~ cursor-code)
- (#.Record (~ (with-func-args args
- (if export?
- (with-export-meta =meta)
- =meta))))])))))
+ (#.Record (~ (with-func-args args =meta)))]
+ (~ (bit$ exported?)))))))
#None
(fail "Wrong syntax for def:"))))
@@ -3370,9 +3370,8 @@
(return (list (` ("lux def" (~ name)
(~ body)
[(~ cursor-code)
- (#Record (~ (if exported?
- (with-export-meta =meta)
- =meta)))])))))
+ (#Record (~ =meta))]
+ (~ (bit$ exported?)))))))
#None
(fail "Wrong syntax for macro:"))))
@@ -3777,7 +3776,7 @@
(: (-> Code (Meta [Code Code]))
(function (_ token)
(case token
- (^ [_ (#Form (list [_ (#Text "lux def")] [_ (#Identifier "" tag-name)] value meta))])
+ (^ [_ (#Form (list [_ (#Text "lux def")] [_ (#Identifier "" tag-name)] value meta [_ (#Bit #0)]))])
(case (get tag-name tag-mappings)
(#Some tag)
(wrap [tag value])
@@ -3909,9 +3908,6 @@
_
(#Some (` (.All (~ type-name) [(~+ args)] (~ type)))))))
total-meta (let [meta (process-def-meta meta)
- meta (if exported?
- (with-export-meta meta)
- meta)
meta (if rec?
(` (#.Cons (~ (flag-meta "type-rec?")) (~ meta)))
meta)]
@@ -3927,13 +3923,15 @@
(` ("lux def type tagged" (~ type-name)
(~ typeC)
(~ total-meta)
- [(~+ (list@map text$ tags))]))
+ [(~+ (list@map text$ tags))]
+ (~ (bit$ exported?))))
_
(` ("lux def" (~ type-name)
("lux check type"
(~ typeC))
- (~ total-meta)))))))
+ (~ total-meta)
+ (~ (bit$ exported?))))))))
#None
(fail "Wrong syntax for type:"))))
@@ -4231,12 +4229,9 @@
(#Some =module)
(let [to-alias (list@map (: (-> [Text Definition]
(List Text))
- (function (_ [name [def-type def-meta def-value]])
- (case (get-meta ["lux" "export?"] def-meta)
- (#Some [_ (#Bit #1)])
+ (function (_ [name [exported? def-type def-meta def-value]])
+ (if exported?
(list name)
-
- _
(list))))
(let [{#module-hash _ #module-aliases _ #definitions definitions #imports _ #tags tags #types types #module-annotations _ #module-state _} =module]
definitions))]
@@ -4312,7 +4307,7 @@
#None
#None
- (#Some [def-type def-meta def-value])
+ (#Some [exported? def-type def-meta def-value])
(#Some def-type)))))
(def: (find-def-value name state)
@@ -4331,7 +4326,7 @@
#None
(#Left (text@compose "Unknown definition: " (name@encode name)))
- (#Some [def-type def-meta def-value])
+ (#Some [exported? def-type def-meta def-value])
(#Right [state [def-type def-value]])))))
(def: (find-type-var idx bindings)
@@ -4609,7 +4604,8 @@
_
(return (list (` ("lux def" (~ (local-identifier$ (de-alias "" short alias)))
(~ source+)
- [(~ cursor-code) (#.Record #Nil)])))))))
+ [(~ cursor-code) (#.Record #Nil)]
+ #0)))))))
(macro: #export (open: tokens)
{#.doc (text$ ($_ "lux text concat"
@@ -4647,7 +4643,8 @@
(do meta-monad
[g!struct (gensym "struct")]
(return (list (` ("lux def" (~ g!struct) (~ struct)
- [(~ cursor-code) (#.Record #Nil)]))
+ [(~ cursor-code) (#.Record #Nil)]
+ #0))
(` (..open: (~ (text$ alias)) (~ g!struct)))))))
_
@@ -4689,16 +4686,7 @@
#let [[referral options] referral+options]
openings+options (parse-openings options)
#let [[openings options] openings+options]
- current-module current-module-name
- #let [test-referrals (: (-> Text (List Text) (List Text) (Meta (List Any)))
- (function (_ module-name all-defs referred-defs)
- (monad@map meta-monad
- (: (-> Text (Meta Any))
- (function (_ _def)
- (if (is-member? all-defs _def)
- (return [])
- (fail ($_ text@compose _def " is not defined in module " module-name " @ " current-module)))))
- referred-defs)))]]
+ current-module current-module-name]
(case options
#Nil
(wrap {#refer-defs referral