You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/investigating-lang-ext-semantics/index.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ tags = ["Community", "Stability"]
8
8
+++
9
9
10
10
Hi I'm [Jappie](https://jappie.me) and I volunteer for the [Haskell Foundation Stability Working Group](https://blog.haskell.org/stability-working-group/).
11
-
Recently we analyzed the [head.hackage](https://gitlab.haskell.org/ghc/head.hackage)[^head.hackage] patches to understand
11
+
Recently we analyzed the [head.hackage](https://gitlab.haskell.org/ghc/head.hackage) patches to understand
12
12
why code breaks on new GHC releases.
13
13
"head.hackage" is a repository of patches for Hackage.
14
14
GHC engineers use these to test out new GHC builds on a wide range of
@@ -22,7 +22,7 @@ The meaning of (some) language extensions changed between GHC releases.
22
22
This post walks through the main categories of breakage,
23
23
why they happened, and what they tell us about long-term stability.
24
24
If you care about a smoother upgrade path for Haskell users,
25
-
we invite you to participate in the Stability Working Group.
25
+
we invite you to participate in the [Haskell Foundation Stability Working Group](https://blog.haskell.org/stability-working-group/).
26
26
27
27
[^upstream]: Upstreaming is the process of sending a patch to the “maintainers” of an open-source project. The maintainers will then make the patch ‘official’ by merging it. In principle, the process is simple, but in practice, the burden of proof (especially for larger projects) is on the person who submitted the patch. They have to convince the maintainers that the patch is useful, which takes time in the form of communication
28
28
@@ -76,7 +76,7 @@ You have to insert a lambda, which apparently has some performance impact.
76
76
This had a big impact on [Yesod stacks](https://www.yesodweb.com/book),
77
77
whose code generation helpfully created
78
78
the database alias in the template:
79
-
```diff
79
+
```haskell
80
80
typeDBa=forall (m::Type->Type).
81
81
(MonadUnliftIOm) =>ReaderTSqlBackendma
82
82
```
@@ -171,7 +171,9 @@ From what I understand from the [manual](https://ghc.gitlab.haskell.org/ghc/doc/
171
171
is that part of the syntax for type abstractions landed in GHC 9.2,
172
172
however 9.8 and onwards requires you to enable this language extension.
173
173
This appeared because certain new functionality was introduced behind an
174
-
old language extension flag, according to [this proposal](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0448-type-variable-scoping.rst#4type-arguments-in-constructor-patterns).
174
+
old language extension flag, according to [this proposal](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0448-type-variable-scoping.rst#4type-arguments-in-constructor-patterns). It says we don't want to introduce new functionality behind established extensions,
175
+
so that's why we require TypeAbstractions now,
176
+
where previously ScopedTypeVariables and TypeApplications were enough.
175
177
176
178
This extension enables you to bind type variables in pattern matches.
177
179
I don't know why this happened like this, but it happened in 2023:
0 commit comments