- Language: Haskell
- Stars: 271
- Repository: https://github.com/exercism/haskell
#868When a `.meta/hints.md` file or some other Markdown file in the track repo links to e.g. https://hackage.haskell.org/package/text-188.8.131.52/docs/Data-Text.html there is no guarantee that this is the version of the package that the student ends up using when adding `- text` in package.yaml. The current solution, to include the latest version at the time of writing (or whatever version one ended up copy-pasting; Google isn't always friendly), has the drawback that the API link becomes outdated over time in every Markdown file across the track repo. An alternative solution, which is to remove the version info in those links, e.g. https://hackage.haskell.org/package/text/docs/Data-Text.html, such that it redirects to the latest version of the package. This still does not guarantee that it is the version of the package that the student ends up using, since we may be behind on updating `stack.yaml`. In addition, a newer version of the package may have deleted a module, causing a 404. This is, however, unlikely as long as we stick to recommending packages with stable APIs. Still, this alternative means that we only need to keep track of Stack LTS package versions in `stack.yaml` and will not have to think about which packages got bumped between Stack LTS releases. If we can reach a track policy on this matter, it means that many Markdown files can be updated to have their specific version information stripped. *(The golden solution is to match package versions of all packages linked to in Markdown files against a relevant Stack LTS -- the package's or some constant Stack LTS version assumed in the track repo for links not specifically tied to one exercise. This, however, seems like a lot of work.)*
#852Most exercises on the Haskell track have unit tests that are based on *canonical tests* shared between all Exercism tracks in [exercism/problem-specifications](https://github.com/exercism/problem-specifications/tree/master/exercises). When alterations are made to these tests, the unit tests that mirror them on the Haskell track come out of sync. The task at hand is to pick an exercise where versions have come out of sync and make the necessary changes to the Haskell test suite for that exercise. A list of exercises for which this is relevant can be generated by the following site: https://tracks.exercism.io/haskell/master (updates automatically) or using e.g. [`up-to-date/hs.rb`](https://github.com/petertseng/exercism-problem-specifications/tree/up-to-date/up-to-date). Protocol: To avoid race conditions, you can declare that you intend to bump a specific exercise here before submitting a PR. One PR per version bump per exercise. Most exercises are only one version bump behind. An extract from #849 made Oct 1, 2019, **updated Oct 17**: - [ ] palindrome-products: 184.108.40.206 < 1.2.0 - [x] forth: 220.127.116.11 < 1.7.1 - [x] pangram: 18.104.22.168 < 2.0.0 - [ ] phone-number: 22.214.171.124 < 1.7.0 - [x] clock: 126.96.36.199 < 2.4.0 - [x] space-age: 188.8.131.52 < 1.2.0 - [x] robot-simulator: 184.108.40.206 < 3.2.0 - [ ] luhn: 220.127.116.11 < 1.6.1 - [ ] anagram: 18.104.22.168 < 1.5.0 - [ ] queen-attack: 22.214.171.124 < 2.3.0 - [x] acronym: 126.96.36.199 < 1.7.0 - [ ] allergies: 188.8.131.52 < 2.0.0 - [x] matrix: 184.108.40.206 < 1.3.0 - [ ] simple-cipher: 220.127.116.11 < 2.0.0 - [x] word-count: 18.104.22.168 < 1.4.0 - [x] armstrong-numbers: 22.214.171.124 < 1.1.0 - [x] leap: 126.96.36.199 < 1.6.0 - [x] etl: 188.8.131.52 < 2.0.1 - [ ] ~~beer-song~~ - [ ] ~~food-chain~~ - [ ] ~~house~~ - [ ] ~~triangle~~ For example PRs of such version bumps, see [all PRs labelled `sync/tests`](https://github.com/exercism/haskell/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3Async%2Ftests+). A quick checklist: - Find [the latest canonical tests for a given exercise](https://github.com/exercism/problem-specifications/tree/master/exercises). - Make sure that the version in package.yaml is bumped according to [this track's versioning policy](https://github.com/exercism/haskell#exercise-versioning): Same as the canonical test version + a 4th incremental serial component. - Make sure to reference, in the commit message, the PR(s) in exercism/problem-specifications that address the canonical version bump(s): `exercism/problem-specifications#XYZ`. See e.g. #817 for an example of this. Happy Hacktoberfest!