davidgregory084 / inc Goto Github PK
View Code? Open in Web Editor NEWExperiments with incremental compiler construction on the JVM
License: Apache License 2.0
Experiments with incremental compiler construction on the JVM
License: Apache License 2.0
At the moment we have Scalacheck generators for arbitrary well-typed programs but they are very simple and do not exercise any polymorphic code.
It would be very useful to figure out a way to generate arbitrary polymorphic programs so that we can ensure that well-typed polymorphic programs can be compiled.
At the moment we have generators for arbitrary well-typed monomorphic programs. This enables us to test to a limited degree that well-typed programs can be compiled successfully, but it does not provide any reassurance that ill-typed programs will fail compilation.
The only way that I have seen others do this is to generate well-typed programs and then make some small change to the program which breaks one of the inference rules for the type system. This is likely to be very tricky!
This is the canonical way to implement type inference algorithms with decent performance.
There are several implementations of union find in the Scala ecosystem (e.g. DisjointSets in typelevel/cats-collections) but it may be better to use or implement a mutable one.
The test suite generated a random program like so:
module Test.Main.Ku2h6o { let xm = (); let ef = (xg, ufl, m) -> ''' }
I haven't added support for char escapes yet. I changed this to
module Test.Main.Ku2h6o { let xm = (); let ef = (xg, ufl, m) -> '' }
and the output was even more unhelpful than usual. Probably need a special case for chars and strings to avoid this.
At the moment there are two formats in which trees can be printed:
The difficulty with this is that the pretty-printed sources display nothing related to the metadata embedded in the trees, whereas the pretty printed Scala data structures are far too difficult to read and interpret.
It would be nice to have some functionality to pretty print the trees as inc source but with name and type annotations added inline.
This is because it is implementation-specific as to whether they will be visible to the VM due to case-insensitive file systems. Discovered by running the codegen tests on a Mac.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.