We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3.0.0-RC3
enum Func[-A, +B] { case Double extends Func[Int, Int] case ToString extends Func[Float, String] def run: A => B = this match { case Double => (x: Int) => x * 2 case ToString => (x: Float) => x.toString } }
// The compiler complains at each case: Found: Int Required: B // and Fount: String Required: B
The compiler should be able to unify B with Int or String depending on the case being evaluated.
B
Int
String
The text was updated successfully, but these errors were encountered:
Workaround:
enum Func[-A, +B] { case Double() extends Func[Int, Int] case ToString() extends Func[Float, String] def run: A => B = this match { case Double() => (x: Int) => x * 2 case ToString() => (x: Float) => x.toString } }
Currently, GADTs do not do any reasoning about singletons, which is a big limitation. I believe @Linyxus is already working on fixing that.
Sorry, something went wrong.
Oh nice! Thank you, that works for me. I'll keep this one opened for tracking.
@abgruszecki 🙇
abgruszecki
Successfully merging a pull request may close this issue.
Compiler version
3.0.0-RC3
Minimized code
Output
Expectation
The compiler should be able to unify
B
withInt
orString
depending on the case being evaluated.The text was updated successfully, but these errors were encountered: