Comments (3)
Man, the method typing code is quite hairy. I noticed it also performs some needless subsumption checks. It's in dire need of simplification (let's look at this in the next meeting).
Right... The unnecessary subsumption checks can be skipped with a guard. But ultimately refactoring should be the way to go.
from mlscript.
Nice job tracing this to the root causes. I tried to fix it, but there is one more thing that's going wrong here. In fact I noticed that method type parameters don't seem to be treated correctly.
class C
method Foo[A](a: A) = a + 1
//│ Defined class C
//│ Defined C.Foo: C -> int -> int
Here A
should be treated as a rigid type variable (implemented as a trait tag). I'm looking into fixing it now.
(That's a downside of providing default arguments. You are not forced to review every invocation and provide the appropriate argument...)
Very true. They should be used sparingly!
from mlscript.
Man, the method typing code is quite hairy. I noticed it also performs some needless subsumption checks. It's in dire need of simplification (let's look at this in the next meeting).
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
- Infinite loop in expanding abstract class with self type HOT 4
- 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.