- Jul 26, 2025
-
-
Artin Ghasivand authored
-
- Jul 23, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
The fix is explained in Note [Orienting TcTyVar equalities]
-
- Jul 22, 2025
-
-
Artin Ghasivand authored
-
- Jul 21, 2025
-
-
Artin Ghasivand authored
-
- Jul 17, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
Here are the new names: - sigmaToRho -> sigmaToRho_p - rhoToTau -> rhoToTau_p - sigmaToTau -> sigmaToTau_p previoiusly they returned
-
Artin Ghasivand authored
-
- Jul 15, 2025
-
-
Artin Ghasivand authored
Now nested applications like `Either (Maybe (List Bool)) Integer` get printed correctly.
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
- Jul 13, 2025
-
-
Artin Ghasivand authored
I'm not very confident about this fix, because it meant that I had to change the corresponding rule too. We might be able to avoid it if we tuned the generator. I'm afraid that the only reason we need to do this is that the declarative nature of the Inst-Check rule doesn't account for the fact that the type we are pushing in may be a unification variable.
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
- Jul 12, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
- Impredicative instantiation is working - Some of the pretty printer bugs are fixed - Add many more tests
-
- Jun 23, 2025
-
-
Artin Ghasivand authored
{- Note [Implementing the typeCmd command] If we were to just to a tcInfer_ (tcExpr gamma <expr>), then the type of <expr> would be instantiated, and we'd have to re-generalize it again. That means declarations that had top level signature, like: map :: forall a b. (a -> b) -> List a -> List b map f Nil = Nil map f (Cons x xs) = Cons (f x) (map f xs) would then be printed by :type as: forall {a:Type}. forall {b:Type}. (a -> b) -> List a -> List b Considering that our system supports Visible Type Application (I-TyApp) this makes an actual, user observable differnce. -}
-
- Jun 22, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
The problem was that the QuantifiedR pattern synonym used the mkQuantifiedR function to choose the appropriate constructor and maintain sigma and rho invariants. (See Note [Invariants of Sigma and Rho]), which instead of using the internal data constructor QuantifiedRho, used QuantifiedR again, which in turn would cause the typechecker to loop.
-
- Jun 20, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
- Jun 19, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
./test/cases/should-typecheck/fixLet-infer now passes
-
- Jun 17, 2025
-
-
Artin Ghasivand authored
-
- Jun 11, 2025
-
-
Artin Ghasivand authored
-
- Jun 09, 2025
-
-
Artin Ghasivand authored
- Added compose, fix the type of `and` and `or` add test letAndOr-infer - The typecheckerr can now typecheck map, foldr, and foldl - Renamed emitSimple and emitSimples to emitCt and emitCts - Renamed emitImplic and emitImplics to emitImplicCt and emitImplicCts
-
- Jun 08, 2025
-
-
Artin Ghasivand authored
-
- Jun 06, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
- Jun 05, 2025
-
-
Artin Ghasivand authored
-
- Jun 03, 2025
-
-
Artin Ghasivand authored
-
- May 27, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
-
- May 22, 2025
-
-
Artin Ghasivand authored
-
- May 10, 2025
-
-
Artin Ghasivand authored
-
Artin Ghasivand authored
This fix introduces capture-avoiding substitution using the rapier algorithm described in the "Secrets of the Glasgow Haskell Compiler inliner" paper. Local uniques are generated by the mkLocalUnique function in the Env module. See Note [Local uniques]
-
- May 02, 2025
-
-
Artin Ghasivand authored
-