Comments (4)
Minimized:
abstract class Foo[T]: Foo[Int]
(f: Foo['a]) => f : Str
Minimized further (but the trace looks different):
abstract class Foo: Foo
(f: Foo) => f : Str
from mlscript.
Another one:
type Foo = Foo & Int
(f: Foo) => f : Str
We have to be more careful when we expand types during normalization...
from mlscript.
Note that this only happens on the "new parser/typer frontend" (#187). In the legacy frontend, we were careful to check for cycles in definitions and yielded "Error in class definitions: illegal cycle involving type Foo" for the latter example. We have to adapt these sorts of checks to the new frontend.
from mlscript.
Of course, we can also get unsoundness from such ill-formed types:
type A = A
//│ type A = A
(1 : A)()
//│ nothing
//│ res
//│ Runtime error:
//│ TypeError: 1 is not a function
from mlscript.
Related Issues (20)
- Simplify the `with` construct semantics
- Implement new MLscript syntax
- Traits should be implemented as proper mixins
- The next step of code generation
- TypeScript Libraries Support HOT 18
- Add comprehensive contribution guide
- Add documentation to the MLscript code base
- Type errors in class definitions are swallowed in the web demo
- Add support for class type difference HOT 1
- UCS tracking issue HOT 7
- Add enumerated types (not ADTs)
- Iron out semantics of new object definition parameters and fields HOT 3
- Implement virtuality and constructor restrictions HOT 1
- User-defined operators can lead to insufficient fuel and constraint leakage HOT 3
- Potential infinite loop in type checking HOT 3
- Constructors can be called with invalid parameters HOT 1
- Wrong mixin typing
- Some generic object types are not lattice homomorphisms and those which are should not be forall-distributivity targets
- Quasiquote syntax support HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlscript.