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
@@ -24,7 +24,6 @@ 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
25
we invite you to participate in the [Haskell Foundation Stability Working Group](https://blog.haskell.org/stability-working-group/).
26
26
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
We're also interested in understanding *why* breakage occurs.
@@ -35,8 +34,6 @@ but seems to be from language extension semantics[^meaning].
35
34
We're doing this investigation to understand better where efforts
36
35
should be focused in improving stability.
37
36
38
-
[^meaning]: The precise meaning of features enabled by language extensions. I guess parser changes also count.
39
-
40
37
This gave us the following table:
41
38
42
39
| Name | Cause | Had warnings? |
@@ -61,6 +58,7 @@ because it was one of *the* motivating changes for a [stability working group](h
61
58
## Simplified subsumption
62
59
For the blissfully ignorant reader simplified subsumption causes you
63
60
to do this under certain existential conditions:
61
+
64
62
```diff
65
63
--- a/Distribution/Simple/Utils.hs
66
64
+++ b/Distribution/Simple/Utils.hs
@@ -70,8 +68,8 @@ to do this under certain existential conditions:
70
68
handleDoesNotExist () . removeFile $ name)
71
69
- (withLexicalCallStack (uncurry action))
72
70
+ (withLexicalCallStack (\x -> uncurry action x))
73
-
74
71
```
72
+
75
73
You have to insert a lambda, which apparently has some performance impact.
76
74
This had a big impact on [Yesod stacks](https://www.yesodweb.com/book),
77
75
whose code generation helpfully created
@@ -210,3 +208,7 @@ and good reasons for being introduced.
210
208
If you find this all as interesting as I do,
211
209
please consider joining some of the stability
212
210
working group meetings!
211
+
212
+
[^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
213
+
214
+
[^meaning]: The precise meaning of features enabled by language extensions. I guess parser changes also count.
0 commit comments