By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Let a constructor's name speak for one field, not for one primitive The rule allowed one anonymous primitive per constructor on the grounds that the constructor's name names it. That is only true when the constructor has one field. A name speaks for one payload, so a constructor of several names the whole of what it holds and no part of it, and DispatchProject in this very repository was the counterexample: five fields, one of them a bare list of package names, and PackageName sitting two modules away. So a constructor of one field keeps its primitive and a constructor of two or more names every primitive it holds. That is the same argument applied consistently rather than a stricter rule, and it finds 101 sites across the repositories this was measured on where the old shape found 39. Three of the five it found here wanted the types it asks for: the project command's expected packages are PackageName, the module command's extensions are an ExtensionName, and an export list holds ExportEntry rather than text. The other two are a position or a path beside a message another library wrote, which is the residue this shape has and the old one did not, so they say so in an annotation. good.hs keeps a case of it for the same reason.
Total
11s
Created Started Finished
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | 0s | 0s | 0s | 1s | 0s |
| Eval | 1s | 10s | 10s | 11s | 0s |
| Build | 8s | 0s | 2s | 11s | 0s |
| Suite | 0s | 11s | 11s | 11s | 0s |