aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--documentation/research/Optimization.md4
-rw-r--r--documentation/research/Security.md1
-rw-r--r--documentation/research/cryptography.md2
-rw-r--r--documentation/research/database.md6
-rw-r--r--documentation/research/debugging.md2
-rw-r--r--documentation/research/distributed_programming.md1
-rw-r--r--documentation/research/documentation.md1
-rw-r--r--documentation/research/game_programming.md2
-rw-r--r--documentation/research/math.md5
-rw-r--r--documentation/research/operating_system.md1
-rw-r--r--new-luxc/source/luxc/lang/translation/jvm/function.lux2
-rw-r--r--new-luxc/source/luxc/lang/translation/jvm/reference.lux8
-rw-r--r--stdlib/source/lux/data/number/i16.lux8
-rw-r--r--stdlib/source/lux/data/number/i32.lux8
-rw-r--r--stdlib/source/lux/data/number/i8.lux8
-rw-r--r--stdlib/source/lux/target/jvm/descriptor.lux6
-rw-r--r--stdlib/source/lux/target/jvm/instruction.lux23
-rw-r--r--stdlib/source/lux/tool/compiler/analysis.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/arity.lux14
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/common-lisp/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/js/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/jvm/primitive.lux6
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux61
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/jvm/structure.lux4
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/jvm/value.lux9
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/lua/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/php/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/python/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/generation/scheme/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/phase/synthesis/function.lux3
-rw-r--r--stdlib/source/lux/tool/compiler/synthesis.lux3
-rw-r--r--stdlib/source/test/lux/target/jvm.lux4
-rw-r--r--stdlib/source/test/lux/tool/compiler/phase/synthesis/function.lux3
34 files changed, 168 insertions, 51 deletions
diff --git a/documentation/research/Optimization.md b/documentation/research/Optimization.md
index f46215cdd..32f8e0b18 100644
--- a/documentation/research/Optimization.md
+++ b/documentation/research/Optimization.md
@@ -1,3 +1,7 @@
+# For the compiler
+
+1. [Self Hosting a Million-Lines-Per-Second Parser](https://bjou-lang.org/blog/7-10-2019-self-hosting-a-million-lines-per-second-parser/7-10-2019-self-hosting-a-million-lines-per-second-parser.html)
+
# Reference
1. https://docs.google.com/presentation/d/1tpeJZFObkeick4CF-mx0L3CeCgvT15B96aJeRpxEPcE/preview?slide=id.p
diff --git a/documentation/research/Security.md b/documentation/research/Security.md
index 2990c7243..6ee526434 100644
--- a/documentation/research/Security.md
+++ b/documentation/research/Security.md
@@ -28,6 +28,7 @@
# Reference
+1. [Good Practices for Capability URLs](https://www.w3.org/TR/capability-urls/)
1. [Secure Socket API](https://securesocketapi.org/)
1. [Mind your Language(s): A discussion about languages and security](https://www.ssi.gouv.fr/uploads/IMG/pdf/Mind_Your_Languages_-_version_longue.pdf)
1. https://www.microsoft.com/en-us/research/blog/scaling-the-everest-of-software-security-with-dr-jonathan-protzenko/
diff --git a/documentation/research/cryptography.md b/documentation/research/cryptography.md
index 8176bbcf7..bd3ec0d87 100644
--- a/documentation/research/cryptography.md
+++ b/documentation/research/cryptography.md
@@ -1,5 +1,7 @@
# Constant-time programming
+1. [Verifying Constant-Time Implementations](https://michael-emmi.github.io/papers/conf-uss-AlmeidaBBDE16.pdf)
+1. https://www.bearssl.org/ctmul.html
1. [FaCT: A Flexible, Constant-Time Programming Language](https://cseweb.ucsd.edu/~dstefan/pubs/cauligi:2017:fact.pdf)
1. [FaCT: A DSL for Timing-Sensitive Computation](https://ranjitjhala.github.io/static/fact_dsl.pdf)
1. ["FaCT: A New Language for Constant-Time Programming" by Sunjay Cauligi](https://www.youtube.com/watch?v=kbn9UCRK2Qg)
diff --git a/documentation/research/database.md b/documentation/research/database.md
index de99fde3f..65f42f3c8 100644
--- a/documentation/research/database.md
+++ b/documentation/research/database.md
@@ -38,9 +38,8 @@
# Optimization
-1. Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last
-
- https://db.cs.cmu.edu/papers/2017/p1-menon.pdf
+1. [Hera - High Efficiency Reliable Access to data stores](https://github.com/paypal/hera)
+1. [Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last](https://db.cs.cmu.edu/papers/2017/p1-menon.pdf)
1. https://medium.com/connect-the-dots/optimizing-queries-in-rethinkdb-584d7f660cb
1. https://blog.acolyer.org/2019/01/18/towards-a-hands-free-query-optimizer-through-deep-learning/
1. http://blog.felipe.rs/2019/01/29/demystifying-join-algorithms/
@@ -107,6 +106,7 @@
## General
+1. https://github.com/Workiva/eva/
1. https://learndb.net/
1. http://orientdb.com/
1. https://ignite.apache.org/
diff --git a/documentation/research/debugging.md b/documentation/research/debugging.md
index 39fa3b51f..6b9671d47 100644
--- a/documentation/research/debugging.md
+++ b/documentation/research/debugging.md
@@ -14,6 +14,8 @@
# Reference
+1. [Multiverse Debugging: Non-Deterministic Debugging for Non-Deterministic Programs](https://stefan-marr.de/2019/07/what-if-we-could-see-all-concurrency-bugs-in-the-debugger/)
+1. [Writing a Debugger](http://system.joekain.com/debugger/)
1. https://en.wikipedia.org/wiki/Jinx_Debugger
1. http://www.mattzeunert.com/2017/12/07/better-types-of-debuggers.html
1. https://www.youtube.com/watch?v=ipDhvd1NsmE
diff --git a/documentation/research/distributed_programming.md b/documentation/research/distributed_programming.md
index 018357958..991edf8b0 100644
--- a/documentation/research/distributed_programming.md
+++ b/documentation/research/distributed_programming.md
@@ -1,5 +1,6 @@
# Reference
+1. [DDD and Messaging Architectures: An overview of my different series on patterns in distributed systems.](http://verraes.net/2019/05/ddd-msg-arch/)
1. https://replicated.cc/
1. http://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer/
1. https://courses.engr.illinois.edu/cs525/sp2018/index.html
diff --git a/documentation/research/documentation.md b/documentation/research/documentation.md
index 55cc7e02a..3219348b9 100644
--- a/documentation/research/documentation.md
+++ b/documentation/research/documentation.md
@@ -45,6 +45,7 @@
# Reference
+1. [Seamless API Specification](https://github.com/seamlessapis/seamless/tree/master/domain)
1. https://docs.racket-lang.org/pollen/
1. [Documenting the Clojure/Script Ecosystem – Martin Klepsch](https://www.youtube.com/watch?v=mWrvd6SE7Vg)
1. http://apistylebook.com/
diff --git a/documentation/research/game_programming.md b/documentation/research/game_programming.md
index 3ff01be0a..5034eda93 100644
--- a/documentation/research/game_programming.md
+++ b/documentation/research/game_programming.md
@@ -59,6 +59,8 @@
# Rendering
+1. [WebGL2 Fundamentals](https://webgl2fundamentals.org/)
+1. [Tiles to Curves: Fun With Voronoi Graphs (part 1)](https://www.gamedev.net/articles/programming/general-and-gameplay-programming/tiles-to-curves-fun-with-voronoi-graphs-part-1-r5150/)
1. [Lazy Incremental Computation for Efficient Scene Graph Rendering](https://www.cg.tuwien.ac.at/courses/RendEng/2015/RendEng-2015-11-16-paper2.pdf)
1. [3D Wireframes in SVG](https://prideout.net/blog/svg_wireframes/)
1. https://zzz.dog/
diff --git a/documentation/research/math.md b/documentation/research/math.md
index 5c8db787c..0299293b3 100644
--- a/documentation/research/math.md
+++ b/documentation/research/math.md
@@ -1,3 +1,7 @@
+# Prime number
+
+1. [The History of the Primality of One: A Selection of Sources](https://cs.uwaterloo.ca/journals/JIS/VOL15/Caldwell2/cald6.pdf)
+
# Trigonometry
1. [Approximating the Sine Function](http://datagenetics.com/blog/july12019/index.html)
@@ -17,6 +21,7 @@
# Topology
+1. [Pointless topology](https://en.wikipedia.org/wiki/Pointless_topology)
1. [ELEMENTARY APPLIED TOPOLOGY](https://www.math.upenn.edu/~ghrist/notes.html)
# Library
diff --git a/documentation/research/operating_system.md b/documentation/research/operating_system.md
index 74d5f33f6..2e26a3976 100644
--- a/documentation/research/operating_system.md
+++ b/documentation/research/operating_system.md
@@ -189,6 +189,7 @@
# System Calls
+1. [1001 Ways of Implementing a System Call](https://x86.lol/generic/2019/07/04/kernel-entry.html)
1. https://eli.thegreenplace.net/2018/basics-of-futexes/
1. [FlexSC: Flexible System Call Scheduling with Exception-Less System Calls](https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Soares.pdf)
diff --git a/new-luxc/source/luxc/lang/translation/jvm/function.lux b/new-luxc/source/luxc/lang/translation/jvm/function.lux
index d0764796f..cc618ca0d 100644
--- a/new-luxc/source/luxc/lang/translation/jvm/function.lux
+++ b/new-luxc/source/luxc/lang/translation/jvm/function.lux
@@ -17,7 +17,7 @@
[compiler
[analysis (#+ Arity Environment)]
[synthesis (#+ Synthesis Abstraction Apply)]
- ["_." reference (#+ Register Variable)]
+ [reference (#+ Register)]
["." phase
["." generation]]]]]
[luxc
diff --git a/new-luxc/source/luxc/lang/translation/jvm/reference.lux b/new-luxc/source/luxc/lang/translation/jvm/reference.lux
index 63fd0685a..886f461ce 100644
--- a/new-luxc/source/luxc/lang/translation/jvm/reference.lux
+++ b/new-luxc/source/luxc/lang/translation/jvm/reference.lux
@@ -37,14 +37,14 @@
//.$Object)))))
(def: local
- (-> Register (Operation Inst))
- (|>> _.ALOAD operation@wrap))
+ (-> Register Inst)
+ (|>> _.ALOAD))
(def: #export (variable variable)
(-> Variable (Operation Inst))
(case variable
(#reference.Local variable)
- (local variable)
+ (operation@wrap (local variable))
(#reference.Foreign variable)
(foreign variable)))
@@ -53,4 +53,4 @@
(-> Name (Operation Inst))
(do phase.monad
[bytecode-name (generation.remember name)]
- (operation@wrap (_.GETSTATIC bytecode-name //.value-field //.$Object))))
+ (wrap (_.GETSTATIC bytecode-name //.value-field //.$Object))))
diff --git a/stdlib/source/lux/data/number/i16.lux b/stdlib/source/lux/data/number/i16.lux
index 23f64afc5..44fe0e988 100644
--- a/stdlib/source/lux/data/number/i16.lux
+++ b/stdlib/source/lux/data/number/i16.lux
@@ -12,9 +12,9 @@
(def: #export I16 (:by-example [size]
{(Sub size)
- sub}
+ ..sub}
(I64 size)))
-(def: #export i16 (-> I64 I16) (get@ #i64.narrow sub))
-(def: #export i64 (-> I16 I64) (get@ #i64.wide sub))
-(def: #export equivalence (Equivalence I16) (get@ #i64.equivalence sub))
+(def: #export i16 (-> I64 I16) (get@ #i64.narrow ..sub))
+(def: #export i64 (-> I16 I64) (get@ #i64.wide ..sub))
+(def: #export equivalence (Equivalence I16) (get@ #i64.equivalence ..sub))
diff --git a/stdlib/source/lux/data/number/i32.lux b/stdlib/source/lux/data/number/i32.lux
index 7f4452880..560168f6f 100644
--- a/stdlib/source/lux/data/number/i32.lux
+++ b/stdlib/source/lux/data/number/i32.lux
@@ -12,9 +12,9 @@
(def: #export I32 (:by-example [size]
{(Sub size)
- sub}
+ ..sub}
(I64 size)))
-(def: #export i32 (-> I64 I32) (get@ #i64.narrow sub))
-(def: #export i64 (-> I32 I64) (get@ #i64.wide sub))
-(def: #export equivalence (Equivalence I32) (get@ #i64.equivalence sub))
+(def: #export i32 (-> I64 I32) (get@ #i64.narrow ..sub))
+(def: #export i64 (-> I32 I64) (get@ #i64.wide ..sub))
+(def: #export equivalence (Equivalence I32) (get@ #i64.equivalence ..sub))
diff --git a/stdlib/source/lux/data/number/i8.lux b/stdlib/source/lux/data/number/i8.lux
index 483f6a6a1..a6475eb15 100644
--- a/stdlib/source/lux/data/number/i8.lux
+++ b/stdlib/source/lux/data/number/i8.lux
@@ -12,9 +12,9 @@
(def: #export I8 (:by-example [size]
{(Sub size)
- sub}
+ ..sub}
(I64 size)))
-(def: #export i8 (-> I64 I8) (get@ #i64.narrow sub))
-(def: #export i64 (-> I8 I64) (get@ #i64.wide sub))
-(def: #export equivalence (Equivalence I8) (get@ #i64.equivalence sub))
+(def: #export i8 (-> I64 I8) (get@ #i64.narrow ..sub))
+(def: #export i64 (-> I8 I64) (get@ #i64.wide ..sub))
+(def: #export equivalence (Equivalence I8) (get@ #i64.equivalence ..sub))
diff --git a/stdlib/source/lux/target/jvm/descriptor.lux b/stdlib/source/lux/target/jvm/descriptor.lux
index 1ca625bd6..267835e1b 100644
--- a/stdlib/source/lux/target/jvm/descriptor.lux
+++ b/stdlib/source/lux/target/jvm/descriptor.lux
@@ -70,9 +70,9 @@
(format "[")
:abstraction))
- (def: #export (method inputs output)
- (-> (List (Descriptor (Value Any)))
- (Descriptor (Return Any))
+ (def: #export (method [inputs output])
+ (-> [(List (Descriptor (Value Any)))
+ (Descriptor (Return Any))]
(Descriptor Method))
(:abstraction
(format (|> inputs
diff --git a/stdlib/source/lux/target/jvm/instruction.lux b/stdlib/source/lux/target/jvm/instruction.lux
index 02057202b..25b10cc9e 100644
--- a/stdlib/source/lux/target/jvm/instruction.lux
+++ b/stdlib/source/lux/target/jvm/instruction.lux
@@ -36,9 +36,9 @@
(type: #export Address Nat)
-(type: Resolver (Dictionary Label Address))
+(type: #export Resolver (Dictionary Label Address))
-(type: Tracker
+(type: #export Tracker
{#program-counter Address
#next-label Label
#known-labels Resolver})
@@ -470,23 +470,21 @@
(cond (is? //descriptor.void descriptor)
0
- (is? //descriptor.long descriptor)
+ (or (is? //descriptor.long descriptor)
+ (is? //descriptor.double descriptor))
2
- (is? //descriptor.double descriptor)
- 2
-
## else
1)))
(template [<static?> <name> <bytecode>]
- [(def: #export (<name> class method inputs output)
- (-> External Text (List (Descriptor (Value Any))) (Descriptor (Return Any)) (Instruction Any))
+ [(def: #export (<name> class method [inputs output])
+ (-> External Text [(List (Descriptor (Value Any))) (Descriptor (Return Any))] (Instruction Any))
(do ..monad
[index (<| ..lift
(//constant/pool.method class)
{#//constant/pool.name method
- #//constant/pool.descriptor (//descriptor.method inputs output)})]
+ #//constant/pool.descriptor (//descriptor.method [inputs output])})]
(..nullary (<bytecode>
index
(|> inputs
@@ -522,3 +520,10 @@
[getfield /bytecode.getfield/1 /bytecode.getfield/2]
[putfield /bytecode.putfield/1 /bytecode.putfield/2]
)
+
+(def: #export (compose pre post)
+ (All [pre post]
+ (-> (Instruction pre) (Instruction post) (Instruction post)))
+ (do ..monad
+ [_ pre]
+ post))
diff --git a/stdlib/source/lux/tool/compiler/analysis.lux b/stdlib/source/lux/tool/compiler/analysis.lux
index 33973f979..ffefb48f7 100644
--- a/stdlib/source/lux/tool/compiler/analysis.lux
+++ b/stdlib/source/lux/tool/compiler/analysis.lux
@@ -16,6 +16,7 @@
[collection
["." list ("#@." functor fold)]]]]
[//
+ [arity (#+ Arity)]
["." reference (#+ Register Variable Reference)]
["." phase
["." extension (#+ Extension)]]])
@@ -91,8 +92,6 @@
[text Text #..Text]
)
-(type: #export Arity Nat)
-
(type: #export (Abstraction c) [Environment Arity c])
(type: #export (Application c) [c (List c)])
diff --git a/stdlib/source/lux/tool/compiler/arity.lux b/stdlib/source/lux/tool/compiler/arity.lux
new file mode 100644
index 000000000..2e6b07490
--- /dev/null
+++ b/stdlib/source/lux/tool/compiler/arity.lux
@@ -0,0 +1,14 @@
+(.module:
+ [lux #*
+ [data
+ [number
+ ["n" nat]]]])
+
+(type: #export Arity Nat)
+
+(template [<name> <comparison>]
+ [(def: #export <name> (-> Arity Bit) (<comparison> 1))]
+
+ [mono? n.=]
+ [poly? n.>]
+ )
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/common-lisp/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/common-lisp/function.lux
index c8edd4e46..3dcc24448 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/common-lisp/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/common-lisp/function.lux
@@ -19,7 +19,8 @@
["#/" //
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/js/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/js/function.lux
index a0418b839..ec48162c5 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/js/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/js/function.lux
@@ -19,7 +19,8 @@
["#/" // ("#@." monad)
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/primitive.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/primitive.lux
index 2807487ae..27a02d7b4 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/primitive.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/primitive.lux
@@ -24,11 +24,11 @@
(do _.monad
[_ (`` (|> value (~~ (template.splice <ldc>))))]
(_.invokestatic <class> "valueOf"
- (list <inputD>)
- (|.object <class>))))]
+ [(list <inputD>)
+ (|.object <class>)])))]
[i64 (I64 Any) [.int constant.long _.ldc/long] "java.lang.Long" |.long]
- [f64 Frac [constant.double _.ldc/double] "java.lang.Double" |.double]
+ [f64 Frac [constant.double _.ldc/double] "java.lang.Double" |.double]
)
(def: #export text _.ldc/string)
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux
new file mode 100644
index 000000000..3e6738df0
--- /dev/null
+++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux
@@ -0,0 +1,61 @@
+(.module:
+ [lux #*
+ [abstract
+ [monad (#+ do)]]
+ [data
+ [text
+ ["%" format (#+ format)]]]
+ [tool
+ [compiler
+ ["." reference (#+ Register Variable)]
+ ["." phase ("operation@." monad)
+ ["." generation]]]]
+ [target
+ [jvm
+ ["_" instruction (#+ Instruction)]
+ [encoding
+ ["." unsigned]]]]]
+ ["." // #_
+ [runtime (#+ Operation)]
+ ["#." value]])
+
+(def: #export this
+ (Instruction Any)
+ (_.aload (unsigned.u1 0)))
+
+(template [<name> <prefix>]
+ [(def: #export <name>
+ (-> Register Text)
+ (|>> %.nat (format <prefix>)))]
+
+ [foreign-name "f"]
+ [partial-name "p"]
+ )
+
+(def: (foreign variable)
+ (-> Register (Operation (Instruction Any)))
+ (do phase.monad
+ [function-class generation.context]
+ (wrap ($_ _.compose
+ ..this
+ (_.getfield function-class (..foreign-name variable)
+ //value.type)))))
+
+(def: local
+ (-> Register (Instruction Any))
+ (|>> unsigned.u1 _.aload))
+
+(def: #export (variable variable)
+ (-> Variable (Operation (Instruction Any)))
+ (case variable
+ (#reference.Local variable)
+ (operation@wrap (..local variable))
+
+ (#reference.Foreign variable)
+ (..foreign variable)))
+
+(def: #export (constant name)
+ (-> Name (Operation (Instruction Any)))
+ (do phase.monad
+ [bytecode-name (generation.remember name)]
+ (wrap (_.getstatic bytecode-name //value.field //value.type))))
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/structure.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/structure.lux
index 1282ac245..8b2c6c270 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/structure.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/structure.lux
@@ -70,5 +70,5 @@
_ (flagG right?)
_ valueI]
(_.invokestatic //runtime.class "variant"
- (list |.int $Object $Object)
- (|.array $Object))))))
+ [(list |.int $Object $Object)
+ (|.array $Object)])))))
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/value.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/value.lux
new file mode 100644
index 000000000..a598b9997
--- /dev/null
+++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/value.lux
@@ -0,0 +1,9 @@
+(.module:
+ [lux (#- type)
+ [target
+ [jvm
+ ["." descriptor (#+ Descriptor Value)]]]])
+
+(def: #export field "_value")
+
+(def: #export type (Descriptor (Value Any)) (descriptor.object "java.lang.Object"))
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/lua/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/lua/function.lux
index eb0a5e71b..7bac2e107 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/lua/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/lua/function.lux
@@ -19,7 +19,8 @@
["#/" //
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/php/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/php/function.lux
index 8dfb9668e..6e75f37bc 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/php/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/php/function.lux
@@ -20,7 +20,8 @@
["#/" //
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/python/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/python/function.lux
index c70ca9c37..ed6e53274 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/python/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/python/function.lux
@@ -19,7 +19,8 @@
["#/" //
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux
index ef3920d23..02e221894 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux
@@ -19,7 +19,8 @@
["#/" //
["." // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/generation/scheme/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/scheme/function.lux
index 41a2e6b17..797e31e1d 100644
--- a/stdlib/source/lux/tool/compiler/phase/generation/scheme/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/generation/scheme/function.lux
@@ -21,7 +21,8 @@
["#/" // ("#;." monad)
["#/" // #_
[reference (#+ Register Variable)]
- [analysis (#+ Variant Tuple Environment Arity Abstraction Application Analysis)]
+ [arity (#+ Arity)]
+ [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
[synthesis (#+ Synthesis)]]]]])
(def: #export (apply generate [functionS argsS+])
diff --git a/stdlib/source/lux/tool/compiler/phase/synthesis/function.lux b/stdlib/source/lux/tool/compiler/phase/synthesis/function.lux
index dbcc56e38..4e09f08e9 100644
--- a/stdlib/source/lux/tool/compiler/phase/synthesis/function.lux
+++ b/stdlib/source/lux/tool/compiler/phase/synthesis/function.lux
@@ -15,8 +15,9 @@
["#." loop (#+ Transform)]
["#/" // ("#;." monad)
["#/" // #_
+ [arity (#+ Arity)]
["#." reference (#+ Register Variable)]
- ["#." analysis (#+ Environment Arity Analysis)]
+ ["#." analysis (#+ Environment Analysis)]
["/" synthesis (#+ Path Synthesis Operation Phase)]]]])
(exception: #export (cannot-find-foreign-variable-in-environment {foreign Register} {environment Environment})
diff --git a/stdlib/source/lux/tool/compiler/synthesis.lux b/stdlib/source/lux/tool/compiler/synthesis.lux
index 4c8959b26..e44432bcb 100644
--- a/stdlib/source/lux/tool/compiler/synthesis.lux
+++ b/stdlib/source/lux/tool/compiler/synthesis.lux
@@ -17,8 +17,9 @@
["." list ("#;." functor)]
["." dictionary (#+ Dictionary)]]]]
["." // #_
+ [arity (#+ Arity)]
["#." reference (#+ Register Variable Reference)]
- ["#." analysis (#+ Environment Arity Composite Analysis)]
+ ["#." analysis (#+ Environment Composite Analysis)]
["#." phase
["." extension (#+ Extension)]]])
diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux
index 47ed621d8..18469e74e 100644
--- a/stdlib/source/test/lux/target/jvm.lux
+++ b/stdlib/source/test/lux/target/jvm.lux
@@ -136,8 +136,8 @@
(do /instruction.monad
[_ (/instruction.ldc/long (/constant.long expected))
_ (/instruction.invokestatic "java.lang.Long" "valueOf"
- (list /descriptor.long)
- (/descriptor.object "java.lang.Long"))]
+ [(list /descriptor.long)
+ (/descriptor.object "java.lang.Long")])]
/instruction.areturn)))
(row.row))
(binaryF.run /class.writer))
diff --git a/stdlib/source/test/lux/tool/compiler/phase/synthesis/function.lux b/stdlib/source/test/lux/tool/compiler/phase/synthesis/function.lux
index db6c38eca..32044f5dc 100644
--- a/stdlib/source/test/lux/tool/compiler/phase/synthesis/function.lux
+++ b/stdlib/source/test/lux/tool/compiler/phase/synthesis/function.lux
@@ -26,8 +26,9 @@
[extension
["#." bundle]]
["/#" //
+ [arity (#+ Arity)]
["#." reference (#+ Variable) ("variable@." equivalence)]
- ["#." analysis (#+ Arity Analysis)]
+ ["#." analysis (#+ Analysis)]
["#." synthesis (#+ Synthesis)]]]]]})
(def: constant-function