diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index c51c9609f4..9a0a337fd0 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -42,6 +42,39 @@ #1) #1) +... https://en.wikipedia.org/wiki/Quantifier_(logic) +(.def# Quantification + (.is# Type + ..Bit) + #1) + +... https://en.wikipedia.org/wiki/Universal_quantification +(.def# universal + (.is# Quantification + #0) + #1) + +... https://en.wikipedia.org/wiki/Existential_quantification +(.def# existential + (.is# Quantification + #1) + #1) + +(.def# Parameter + (.is# Type + ..Bit) + #1) + +(.def# abstraction + (.is# Quantification + #0) + #1) + +(.def# argument + (.is# Quantification + #1) + #1) + (.def# Natural (.is# Type {6 #1 diff --git a/stdlib/source/library/lux/compiler.lux b/stdlib/source/library/lux/compiler.lux index 627208bb58..6f73d3c7bb 100644 --- a/stdlib/source/library/lux/compiler.lux +++ b/stdlib/source/library/lux/compiler.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Code + [lux (.except Code Parameter #module) [error [try (.only Try)] @@ -58,7 +58,7 @@ (-> (Key document) (Stack Parameter) (Compiler state document))) -(exception.the .public (cannot_compile module) - (Exception descriptor.Module) +(exception.the .public (cannot_compile [module]) + (Exception [descriptor.Module]) (exception.report (list ["Module" module]))) diff --git a/stdlib/source/library/lux/compiler/language/lux/analysis/type.lux b/stdlib/source/library/lux/compiler/language/lux/analysis/type.lux index f7affb4971..fb2239194d 100644 --- a/stdlib/source/library/lux/compiler/language/lux/analysis/type.lux +++ b/stdlib/source/library/lux/compiler/language/lux/analysis/type.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except) + [lux (.except existential) [abstract [monad (.only do)]] [error diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/analysis.lux b/stdlib/source/library/lux/compiler/language/lux/phase/analysis.lux index dd1a12c6c4..a2925efef2 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/analysis.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/analysis.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except) + [lux (.except abstraction) [abstract [monad (.only do)]] [control diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/extension/analysis/jvm.lux b/stdlib/source/library/lux/compiler/language/lux/phase/extension/analysis/jvm.lux index c6aef0fec5..e95255bf84 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/extension/analysis/jvm.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/extension/analysis/jvm.lux @@ -3,9 +3,9 @@ (.using [library - [lux (.except Type Module Declaration Integer Double + [lux (.except Type Module Declaration Integer Double Parameter #Default #Variable - type with) + type with argument) ["[0]" ffi (.only import)] [abstract [monad (.only do)] diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/extension/declaration/jvm.lux b/stdlib/source/library/lux/compiler/language/lux/phase/extension/declaration/jvm.lux index 9f51aedf46..dc9f141920 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/extension/declaration/jvm.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/extension/declaration/jvm.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Type Definition Declaration + [lux (.except Type Definition Declaration Parameter #Variable) ["[0]" ffi (.only import)] [abstract diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/extension/translation/jvm/host.lux b/stdlib/source/library/lux/compiler/language/lux/phase/extension/translation/jvm/host.lux index cecb290882..ecbf73de8c 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/extension/translation/jvm/host.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/extension/translation/jvm/host.lux @@ -3,7 +3,8 @@ (.using [library - [lux (.except Type) + [lux (.except Type Parameter + argument) [abstract [monad (.only do)] ["<>" projection (.use "[1]#[0]" functor)]] diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/synthesis/function.lux b/stdlib/source/library/lux/compiler/language/lux/phase/synthesis/function.lux index 6f36bb0e30..ebe1104481 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/synthesis/function.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/synthesis/function.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except) + [lux (.except abstraction) [abstract [monad (.only do)] ["[0]" enum]] @@ -60,24 +60,24 @@ (/.abstraction @ functionS) (if (n.= (its /.#arity functionS) (list.size argsS)) - (do ! - [locals /.locals] - (in (|> functionS - (//loop.optimization true locals argsS) - (maybe#each (is (-> [Natural (List /.Term) /.Term] - /.Term) - (function (_ [start inits iteration]) - (when iteration - (/.tail_recursion @ [start' inits' output]) - (if (and (n.= start start') - (list.empty? inits')) - (/.tail_recursion @ [start inits output]) - (/.tail_recursion @ [start inits iteration])) + (do ! + [locals /.locals] + (in (|> functionS + (//loop.optimization true locals argsS) + (maybe#each (is (-> [Natural (List /.Term) /.Term] + /.Term) + (function (_ [start inits iteration]) + (when iteration + (/.tail_recursion @ [start' inits' output]) + (if (and (n.= start start') + (list.empty? inits')) + (/.tail_recursion @ [start inits output]) + (/.tail_recursion @ [start inits iteration])) - _ - (/.tail_recursion @ [start inits iteration]))))) - (maybe.else )))) - (in )) + _ + (/.tail_recursion @ [start inits iteration]))))) + (maybe.else )))) + (in )) (/.reification @ [funcS' argsS']) (in (/.reification @ [funcS' (list#composite argsS' argsS)])) @@ -259,12 +259,12 @@ currying? /.currying?] (in (<| (/.abstraction @) (if currying? - abstraction - (when (//loop.optimization false 1 (list) abstraction) - {.#Some it} - [/.#environment environment - /.#arity (its /.#arity abstraction) - /.#body (/.tail_recursion @ it)] - - {.#None} - abstraction)))))) + abstraction + (when (//loop.optimization false 1 (list) abstraction) + {.#Some it} + [/.#environment environment + /.#arity (its /.#arity abstraction) + /.#body (/.tail_recursion @ it)] + + {.#None} + abstraction)))))) diff --git a/stdlib/source/library/lux/compiler/language/lux/phase/translation/jvm/function.lux b/stdlib/source/library/lux/compiler/language/lux/phase/translation/jvm/function.lux index f2c7cd3ec7..a05fd731da 100644 --- a/stdlib/source/library/lux/compiler/language/lux/phase/translation/jvm/function.lux +++ b/stdlib/source/library/lux/compiler/language/lux/phase/translation/jvm/function.lux @@ -4,7 +4,7 @@ (.using [library [lux (.except Type Label - with) + with abstraction) [abstract [monad (.only do)]] [error diff --git a/stdlib/source/library/lux/compiler/language/lux/synthesis.lux b/stdlib/source/library/lux/compiler/language/lux/synthesis.lux index 7247145044..502cbb7ad8 100644 --- a/stdlib/source/library/lux/compiler/language/lux/synthesis.lux +++ b/stdlib/source/library/lux/compiler/language/lux/synthesis.lux @@ -7,7 +7,8 @@ #locals #source i64 local let exec when its variant tuple text - if or and) + if or and + abstraction) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)] diff --git a/stdlib/source/library/lux/data/collection/list.lux b/stdlib/source/library/lux/data/collection/list.lux index 905afd9b98..a0d773e7aa 100644 --- a/stdlib/source/library/lux/data/collection/list.lux +++ b/stdlib/source/library/lux/data/collection/list.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except only all static has revised) + [lux (.except only all static has revised abstraction) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)] diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index fb23099bfa..4aacd9d15f 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Type Declaration Integer Double + [lux (.except Type Declaration Integer Double Parameter is as type) [abstract [monad (.only do)] diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index 3a88d9d4d7..62f209e15d 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except text) + [lux (.except text argument) [abstract [equivalence (.only Equivalence)] [format (.only Format)] diff --git a/stdlib/source/library/lux/target/jvm/reflection.lux b/stdlib/source/library/lux/target/jvm/reflection.lux index 1888147b5b..2b396ef11e 100644 --- a/stdlib/source/library/lux/target/jvm/reflection.lux +++ b/stdlib/source/library/lux/target/jvm/reflection.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except type) + [lux (.except Parameter type) ["[0]" ffi (.only import)] [abstract [monad (.only do)]] diff --git a/stdlib/source/library/lux/target/jvm/type.lux b/stdlib/source/library/lux/target/jvm/type.lux index 235e52ff3a..38d6f8305a 100644 --- a/stdlib/source/library/lux/target/jvm/type.lux +++ b/stdlib/source/library/lux/target/jvm/type.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Type Declaration) + [lux (.except Type Declaration Parameter) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)]] diff --git a/stdlib/source/library/lux/target/jvm/type/alias.lux b/stdlib/source/library/lux/target/jvm/type/alias.lux index 77437659c6..904e4895a1 100644 --- a/stdlib/source/library/lux/target/jvm/type/alias.lux +++ b/stdlib/source/library/lux/target/jvm/type/alias.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Type) + [lux (.except Type Parameter) [abstract [monad (.only do)] ["<>" projection (.use "[1]#[0]" functor)]] diff --git a/stdlib/source/library/lux/target/jvm/type/category.lux b/stdlib/source/library/lux/target/jvm/type/category.lux index 5023169147..29fe0e8911 100644 --- a/stdlib/source/library/lux/target/jvm/type/category.lux +++ b/stdlib/source/library/lux/target/jvm/type/category.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Declaration) + [lux (.except Declaration Parameter) [macro ["[0]" template] ["[0]" expansion]] diff --git a/stdlib/source/library/lux/target/jvm/type/descriptor.lux b/stdlib/source/library/lux/target/jvm/type/descriptor.lux index 77058bf116..90d944c9d5 100644 --- a/stdlib/source/library/lux/target/jvm/type/descriptor.lux +++ b/stdlib/source/library/lux/target/jvm/type/descriptor.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Declaration) + [lux (.except Declaration Parameter) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)]] diff --git a/stdlib/source/library/lux/target/jvm/type/lux.lux b/stdlib/source/library/lux/target/jvm/type/lux.lux index 3197e3d305..aa8c3abce8 100644 --- a/stdlib/source/library/lux/target/jvm/type/lux.lux +++ b/stdlib/source/library/lux/target/jvm/type/lux.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except type) + [lux (.except Parameter type) [abstract [monad (.only do)] ["<>" projection (.use "[1]#[0]" monad)]] diff --git a/stdlib/source/library/lux/target/jvm/type/reflection.lux b/stdlib/source/library/lux/target/jvm/type/reflection.lux index b3bfa66d6e..dcd2ca06db 100644 --- a/stdlib/source/library/lux/target/jvm/type/reflection.lux +++ b/stdlib/source/library/lux/target/jvm/type/reflection.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Declaration) + [lux (.except Declaration Parameter) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)]] diff --git a/stdlib/source/library/lux/target/jvm/type/signature.lux b/stdlib/source/library/lux/target/jvm/type/signature.lux index fd11504135..fd58aec3e5 100644 --- a/stdlib/source/library/lux/target/jvm/type/signature.lux +++ b/stdlib/source/library/lux/target/jvm/type/signature.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except Declaration) + [lux (.except Declaration Parameter) [abstract [equivalence (.only Equivalence)] [hash (.only Hash)]] diff --git a/stdlib/source/library/lux/type/check.lux b/stdlib/source/library/lux/type/check.lux index db7e00ecff..a36ba1fd27 100644 --- a/stdlib/source/library/lux/type/check.lux +++ b/stdlib/source/library/lux/type/check.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except try except with type) + [lux (.except try except with type existential) [abstract [equivalence (.only Equivalence)] [functor (.only Functor)] diff --git a/stdlib/source/library/lux/type/nominal.lux b/stdlib/source/library/lux/type/nominal.lux index 100bd90da4..d154fc9824 100644 --- a/stdlib/source/library/lux/type/nominal.lux +++ b/stdlib/source/library/lux/type/nominal.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except every) + [lux (.except every abstraction) [abstract [monad (.only do)] ["<>" projection (.use "[1]#[0]" monad)]] diff --git a/stdlib/source/library/lux/world/shell.lux b/stdlib/source/library/lux/world/shell.lux index e1cb98b474..b4cdb6c3c1 100644 --- a/stdlib/source/library/lux/world/shell.lux +++ b/stdlib/source/library/lux/world/shell.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except) + [lux (.except argument) ["[0]" ffi (.only import)] [abstract [monad (.only do)]] @@ -107,21 +107,25 @@ command) (is (-> Argument (Safe Argument ?)) argument) - (is (for_any (_ a) (-> (Safe a ?) a)) + (is (for_any (_ it) + (-> (Safe it ?) + it)) value))) -(every (Sanitizer a) - (-> a a)) +(every Sanitizer + Change) (every Replacer - (-> Text Text)) + (Change Text)) (the (replaced bad replacer) - (-> Text Replacer (-> Text Text)) + (-> Text + (Change Replacer)) (text.replaced bad (replacer bad))) (the safe_common_command - (-> Replacer (Sanitizer Command)) + (-> Replacer + (Sanitizer Command)) (let [x0A (text.of_character (hex "0A")) xFF (text.of_character (hex "FF"))] (function (_ replacer) @@ -181,8 +185,8 @@ (for .jvm (these (import java/lang/String - "[1]::[0]" - (toLowerCase [] java/lang/String)) + "[1]::[0]" + (toLowerCase [] java/lang/String)) (the (jvm::arguments_array arguments) (-> (List Argument) @@ -196,8 +200,8 @@ arguments))) (import (java/util/Map k v) - "[1]::[0]" - (put [k v] "?" v)) + "[1]::[0]" + (put [k v] "?" v)) (the (jvm::load_environment input target) (-> Environment @@ -213,31 +217,31 @@ (dictionary.entries input))) (import java/io/Reader - "[1]::[0]") + "[1]::[0]") (import java/io/BufferedReader - "[1]::[0]" - (new [java/io/Reader]) - (readLine [] "io" "try" "?" java/lang/String)) + "[1]::[0]" + (new [java/io/Reader]) + (readLine [] "io" "try" "?" java/lang/String)) (import java/io/InputStream - "[1]::[0]") + "[1]::[0]") (import java/io/InputStreamReader - "[1]::[0]" - (new [java/io/InputStream])) + "[1]::[0]" + (new [java/io/InputStream])) (import java/io/OutputStream - "[1]::[0]" - (write [[byte]] "io" "try" void)) + "[1]::[0]" + (write [[byte]] "io" "try" void)) (import java/lang/Process - "[1]::[0]" - (getInputStream [] "io" "try" java/io/InputStream) - (getErrorStream [] "io" "try" java/io/InputStream) - (getOutputStream [] "io" "try" java/io/OutputStream) - (destroy [] "io" "try" void) - (waitFor [] "io" "try" int)) + "[1]::[0]" + (getInputStream [] "io" "try" java/io/InputStream) + (getErrorStream [] "io" "try" java/io/InputStream) + (getOutputStream [] "io" "try" java/io/OutputStream) + (destroy [] "io" "try" void) + (waitFor [] "io" "try" int)) (exception.the .public no_more_output) @@ -283,19 +287,19 @@ )))))))) (import java/io/File - "[1]::[0]" - (new [java/lang/String])) + "[1]::[0]" + (new [java/lang/String])) (import java/lang/ProcessBuilder - "[1]::[0]" - (new [[java/lang/String]]) - (environment [] "try" (java/util/Map java/lang/String java/lang/String)) - (directory [java/io/File] java/lang/ProcessBuilder) - (start [] "io" "try" java/lang/Process)) + "[1]::[0]" + (new [[java/lang/String]]) + (environment [] "try" (java/util/Map java/lang/String java/lang/String)) + (directory [java/io/File] java/lang/ProcessBuilder) + (start [] "io" "try" java/lang/Process)) (import java/lang/System - "[1]::[0]" - ("static" getProperty [java/lang/String] "io" "try" java/lang/String)) + "[1]::[0]" + ("static" getProperty [java/lang/String] "io" "try" java/lang/String)) ... https://en.wikipedia.org/wiki/Code_injection#Shell_injection (the windows? diff --git a/stdlib/source/projection/lux/type.lux b/stdlib/source/projection/lux/type.lux index 367d348ddb..d5e2b8ca27 100644 --- a/stdlib/source/projection/lux/type.lux +++ b/stdlib/source/projection/lux/type.lux @@ -3,7 +3,7 @@ (.using [library - [lux (.except function local variant tuple) + [lux (.except function local variant tuple argument existential) [abstract [monad (.only do)] ["//" projection]]