Skip to content

Commit 1a90f32

Browse files
committed
Fixup some minor errors. nice and thight
1 parent 3fac6ab commit 1a90f32

File tree

1 file changed

+6
-4
lines changed
  • content/investigating-lang-ext-semantics

1 file changed

+6
-4
lines changed

content/investigating-lang-ext-semantics/index.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ tags = ["Community", "Stability"]
88
+++
99

1010
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
1212
why code breaks on new GHC releases.
1313
"head.hackage" is a repository of patches for Hackage.
1414
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.
2222
This post walks through the main categories of breakage,
2323
why they happened, and what they tell us about long-term stability.
2424
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/).
2626

2727
[^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
2828

@@ -76,7 +76,7 @@ You have to insert a lambda, which apparently has some performance impact.
7676
This had a big impact on [Yesod stacks](https://www.yesodweb.com/book),
7777
whose code generation helpfully created
7878
the database alias in the template:
79-
```diff
79+
```haskell
8080
type DB a = forall (m :: Type -> Type).
8181
(MonadUnliftIO m) => ReaderT SqlBackend m a
8282
```
@@ -171,7 +171,9 @@ From what I understand from the [manual](https://ghc.gitlab.haskell.org/ghc/doc/
171171
is that part of the syntax for type abstractions landed in GHC 9.2,
172172
however 9.8 and onwards requires you to enable this language extension.
173173
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.
175177

176178
This extension enables you to bind type variables in pattern matches.
177179
I don't know why this happened like this, but it happened in 2023:

0 commit comments

Comments
 (0)