From 4049370ec0d0bec578b8fcb83700d020e81386c4 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Tue, 17 Sep 2019 00:27:13 -0400 Subject: Fixed some bugs related to JVM types. --- documentation/research/Abstract interpretation.md | 4 ++++ documentation/research/Code mods.md | 6 ++++++ documentation/research/Memory Management.md | 4 ++++ documentation/research/cryptography.md | 1 + documentation/research/database.md | 6 +++--- documentation/research/distributed_programming.md | 1 + documentation/research/math.md | 1 + stdlib/source/lux/data/text/format.lux | 7 +------ stdlib/source/lux/target/jvm/loader.lux | 2 +- stdlib/source/lux/target/jvm/type/alias.lux | 9 +++++---- stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux | 4 ++-- stdlib/source/test/lux/target/jvm.lux | 2 +- 12 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 documentation/research/Abstract interpretation.md create mode 100644 documentation/research/Code mods.md diff --git a/documentation/research/Abstract interpretation.md b/documentation/research/Abstract interpretation.md new file mode 100644 index 000000000..d98525f7c --- /dev/null +++ b/documentation/research/Abstract interpretation.md @@ -0,0 +1,4 @@ +# Reference + +1. ["Easy Abstract Interpretation with SPARTA" by Arnaud Venet and Jez Ng](https://www.youtube.com/watch?v=_fA7vkVJhF8) + diff --git a/documentation/research/Code mods.md b/documentation/research/Code mods.md new file mode 100644 index 000000000..8f90f91f6 --- /dev/null +++ b/documentation/research/Code mods.md @@ -0,0 +1,6 @@ +# Reference + +1. ["Parser Parser Combinators for Program Transformation" by Rijnard van Tonder](https://www.youtube.com/watch?v=JMZLBB_BFNg) +1. [Codemod](https://github.com/facebook/codemod) +1. [jscodeshift](https://github.com/facebook/jscodeshift) + diff --git a/documentation/research/Memory Management.md b/documentation/research/Memory Management.md index 80f80ce12..0d761c700 100644 --- a/documentation/research/Memory Management.md +++ b/documentation/research/Memory Management.md @@ -1,3 +1,7 @@ +# Compaction + +1. ["Compacting the Uncompactable" by Bobby Powers](https://www.youtube.com/watch?v=c1UBJbfR-H0) + # Reference counting 1. [Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming](https://arxiv.org/abs/1908.05647) diff --git a/documentation/research/cryptography.md b/documentation/research/cryptography.md index 2dfe331e4..7eaf9cc9f 100644 --- a/documentation/research/cryptography.md +++ b/documentation/research/cryptography.md @@ -9,6 +9,7 @@ # Zero-knowledge proof +1. ["Rhapsody in Zero Knowledge: Proving Without Revealing" by Tony Arcieri](https://www.youtube.com/watch?v=jKSz7W5dTgY) 1. [Zero-Knowledge Proofs: What are they, how do they work, and are they fast yet?](https://zkp.science/) # Hash diff --git a/documentation/research/database.md b/documentation/research/database.md index be17fb766..5c1566fbe 100644 --- a/documentation/research/database.md +++ b/documentation/research/database.md @@ -1,12 +1,12 @@ # Reference +1. ["Temporal Databases for Streaming Architectures" by Jeremy Taylor and Jon Pither](https://www.youtube.com/watch?v=ykbYNBE-V3k) +1. ["Makings of a Modern ACID Compliant Distributed Database" by Attila Szegedi](https://www.youtube.com/watch?v=pn8mCeX3LDE) 1. https://edgedb.com/blog/a-path-to-a-10x-database/ 1. https://cstack.github.io/db_tutorial/ 1. http://www.sql-workbench.eu/dbms_comparison.html 1. http://www.interdb.jp/pg/index.html -1. Foundations of Databases - - http://webdam.inria.fr/Alice/ +1. [Foundations of Databases](http://webdam.inria.fr/Alice/) 1. https://medium.com/textileio/building-the-firebase-for-crdts-7dd8dea8953a # Query diff --git a/documentation/research/distributed_programming.md b/documentation/research/distributed_programming.md index 17f48122c..fbc6fb734 100644 --- a/documentation/research/distributed_programming.md +++ b/documentation/research/distributed_programming.md @@ -48,6 +48,7 @@ # Programming language +1. ["Unison: a new distributed programming language" by Paul Chiusano](https://www.youtube.com/watch?v=gCWtkvDQ2ZI) 1. http://radicle.xyz/ 1. [Lambda World 2018 - Introduction to the Unison programming language - RĂșnar Bjarnason](https://www.youtube.com/watch?v=rp_Eild1aq8) 1. https://www.infoq.com/presentations/language-design-process diff --git a/documentation/research/math.md b/documentation/research/math.md index 6f481936c..326d0f6db 100644 --- a/documentation/research/math.md +++ b/documentation/research/math.md @@ -21,6 +21,7 @@ # Topology +1. [What is Topology?](https://medium.com/cantors-paradise/what-is-topology-963ef4cc6365) 1. [Pointless topology](https://en.wikipedia.org/wiki/Pointless_topology) 1. [ELEMENTARY APPLIED TOPOLOGY](https://www.math.upenn.edu/~ghrist/notes.html) diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux index 99dbc2a73..9f47c4292 100644 --- a/stdlib/source/lux/data/text/format.lux +++ b/stdlib/source/lux/data/text/format.lux @@ -63,14 +63,9 @@ [instant instant.Instant instant.to-text] [duration duration.Duration duration.encode] [date date.Date (:: date.codec encode)] + [cursor Cursor .cursor-description] ) -(def: #export (cursor [file line column]) - (Format Cursor) - (|> (.list (..text file) (..nat line) (..nat column)) - (text.join-with ", ") - (text.enclose ["[" "]"]))) - (def: #export (mod modular) (All [m] (Format (modular.Mod m))) (let [[_ modulus] (modular.un-mod modular)] diff --git a/stdlib/source/lux/target/jvm/loader.lux b/stdlib/source/lux/target/jvm/loader.lux index ed82231e1..3e17d42c8 100644 --- a/stdlib/source/lux/target/jvm/loader.lux +++ b/stdlib/source/lux/target/jvm/loader.lux @@ -45,7 +45,7 @@ (invoke [java/lang/Object [java/lang/Object]] #try java/lang/Object)) (import: #long (java/lang/Class a) - (getDeclaredMethod [java/lang/String [(java/lang/Class java/lang/Object)]] java/lang/reflect/Method)) + (getDeclaredMethod [java/lang/String [(java/lang/Class [? < java/lang/Object])]] java/lang/reflect/Method)) (import: #long java/lang/Integer (#static TYPE (java/lang/Class java/lang/Integer))) diff --git a/stdlib/source/lux/target/jvm/type/alias.lux b/stdlib/source/lux/target/jvm/type/alias.lux index 9d92d7b6a..cd631a251 100644 --- a/stdlib/source/lux/target/jvm/type/alias.lux +++ b/stdlib/source/lux/target/jvm/type/alias.lux @@ -53,13 +53,14 @@ (<>.after (.this //descriptor.class-prefix)) (<>.before (.this //descriptor.class-suffix)))) -(template [ ] +(template [ ] [(def: (-> (Parser (Type Class)) (Parser (Type Parameter))) - (<>.after (.this )))] + (|>> (<>.after (.this )) + (:: <>.monad map )))] - [lower //signature.lower-prefix ..Lower] - [upper //signature.upper-prefix ..Upper] + [lower //signature.lower-prefix //.lower ..Lower] + [upper //signature.upper-prefix //.upper ..Upper] ) (def: (parameter aliasing) diff --git a/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux b/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux index 2d1dec4b2..63f0561c0 100644 --- a/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux +++ b/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux @@ -1128,7 +1128,7 @@ [inputsT (|> (java/lang/reflect/Method::getGenericParameterTypes method) array.to-list (monad.map @ (|>> reflection!.type ////.lift)) - (////@map (monad.map @ (reflection-type mapping))) + (////@map (monad.map @ (..reflection-type mapping))) ////@join) outputT (|> method java/lang/reflect/Method::getGenericReturnType @@ -1139,7 +1139,7 @@ exceptionsT (|> (java/lang/reflect/Method::getGenericExceptionTypes method) array.to-list (monad.map @ (|>> reflection!.type ////.lift)) - (////@map (monad.map @ (reflection-type mapping))) + (////@map (monad.map @ (..reflection-type mapping))) ////@join) #let [methodT (<| (type.univ-q (dictionary.size mapping)) (type.function (case method-style diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux index fc7c140b4..5ffe668fc 100644 --- a/stdlib/source/test/lux/target/jvm.lux +++ b/stdlib/source/test/lux/target/jvm.lux @@ -67,7 +67,7 @@ (invoke [java/lang/Object [java/lang/Object]] #try java/lang/Object)) (import: #long (java/lang/Class c) - (getDeclaredMethod [java/lang/String [(java/lang/Class java/lang/Object)]] java/lang/reflect/Method)) + (getDeclaredMethod [java/lang/String [(java/lang/Class [? < java/lang/Object])]] java/lang/reflect/Method)) (import: #long java/lang/Object (getClass [] (java/lang/Class java/lang/Object)) -- cgit v1.2.3