-
-
Notifications
You must be signed in to change notification settings - Fork 195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Restructure Haskell core track #798
Comments
Related:
|
I don't know what this Track Tool is or what steps comprise it, so it doesn't appear possible to evaluate whether the proposals meet any of its stated goals. However, each proposal has been justified standalone and can be evaluated independently of knowledge of this Track Tool. I encourage that future proposals should continue to be justified in such a manner! I agree with introducing I had to think a lot harder about pangram vs bob but I've come to agree. Both ask "is property P true of text T?" but pangram has only one P, where Bob has multiple (and not all mutually exclusive). |
I've added the following description to the first commit message:
And I also don't know exactly what this Track Tool is or what all its steps are. But the first step is to reorder existing exercises and remove any "mathy" ones. I've not removed any "mathy" ones; there's only
The right order was already there. Having them in straight succession is perhaps better. My main motivation was to group them by learning goal. I don't know if this is optimal in later steps of The Track Tool; I supposed that I could always propose to add other exercises in between them if there were any good reasons to do so. For example, another more dominant learning goal.
That's a good way to put it. |
As a side note:
That's correct. This first Round is a quick fix for the most obvious obstructions. Next rounds go from coarse to fine, and from easier to more advanced exercises. |
Yes, it appears I misunderstood because of misreading the exercises that are being swapped vs the exercises mentioned in the rationale. (Without specific reference to exercises, A and B got swapped, and the rationale mentioning A and C). Therefore it wasn't possible to judge my position on the change, since my rationale targeted an incorrect premise. So my actual evaluation on that change: I think I'd be okay either way, so let's indeed go with the general principle of putting exercises with similar goals together. |
As part of [The Track Anatomy Project][1], the Haskell core track is restructured in #798 using @F3PiX'es multi-stage framework referred to as "The Track Tool". Since The Track Tool is still under development, it isn't documented yet. But the execution of the first step can be viewed for other languages, e.g. exercism/javascript#590. --- Proposal: - Switch "Bob" and "Pangram". They're both about handling textual data. Pangram has fewer gotchas, is quicker done, has more variations among its alternative solutions, and doesn't lend itself as well to `Data.Text`. (See #795.) Bob often involves more refactoring, has more learning objectives and has the extra "You could do it with Data.Text, too!" part. This way people don't try to solve Pangram with Data.Text which is possible but not ideal without mono-traversable, and they get an exercise more under their belt before being thrown into a lot of refactoring. - Switch "Nucleotide Count" and "Sum of Multiples". Eventually I think we should delete "Sum of Multiples" and "Grains" (see #761). But since The Track Tool does not address removal yet, I want to make "Nucleotide Count" come immediately after "RNA Transcription", since they're both thematically related and Nucleotide Count uses Either while RNA Transcription uses Maybe for monadic error handling, so they practice the same thing in progressive difficulty. The proposed track reordering looks like: 1. hello-world 2. leap 3. space-age 4. **pangram** 5. **bob** 6. collatz-conjecture 7. rna-transcription 8. **nucleotide-count** 9. sum-of-multiples 10. grains [1]: https://exercism.io/blog/track-anatomy-project
* Update topics for core exercises in config.json Before continuing to restructure the Haskell core track in #798, this commit adds more topics to the core exercises in particular. This should both make the core track overview more indicative, and provide a better overview for what to look for in replacement exercises. The following topics were changed: - `leap`: Add "guards". One recommended set of solutions split the three predicates into each their guard. So while the exercise can be completed adequately without the use of guards, one can anticipate trying them out. - `space_age`: Replace "discriminated_unions" with "sum_types". This should sound less academic. Because "discriminated_unions" is also used in `yacht`, replace it there, too. - `pangram`: Add "higher_order_functions". There is a number of acceptable solution strategies that all have in common that explicit recursion is removed. One could also consider adding "predicates", but I've found it a little too general and not so indicative of what the exercise is about. - `bob`: Add "guards". This is probably the most significant core exercise wrt. the use of guards, since it contains so many different conditions. - `collatz-conjecture`: Add "guards" and "recursion". I thought about also applying "higher_order_functions" here, but since one popular solution here uses `iterate`, I thought more in the lines of recursion schemes. - `rna-transcription`: Add "traversable". Besides "either", the only point to make in this exercise is to use `traverse`. One could also consider "higher_order_functions" or "recursion" depending on how specific one wants to be. - `nucleotide-count`: Add "data_structures" and "higher_order_functions". This exercise can go in a lot of directions wrt. mentoring, cf. [1]. But importantly, it deals with `Data.Map`, monadic error handling (so "either") and higher-order functions. [1]: https://github.com/exercism/website-copy/blob/master/tracks/haskell/exercises/nucleotide-count/mentoring.md * Fixed alphabetical order of topics
Closing this issue as the effort described in it has played out. |
In an effort to restructure the Haskell core track I have followed @F3PiX'es Track Tool in its current incarnation. Step 1 took me through the current core track and yielded the initial proposal listed below.
config.json
to reflect this via draft PR Switch order of current core exercises #800Switch "Bob" and "Pangram".
They're both about handling textual data.
Pangram has fewer gotchas, is quicker done, has more alternative solutions, and doesn't lend itself as well to
Data.Text
. (See pangram 1.4.1.10: Add test case: determine pangram lazily #795.) Bob often involves more refactoring, has more learning objectives and has the extra "You could do it withData.Text
, too!" part.This way people don't try to solve Pangram with
Data.Text
which is possible but not ideal without mono-traversable, and they get an exercise more under their belt before being thrown into a lot of refactoring.Switch "Nucleotide Count" and "Sum of Multiples".
Eventually I think we should delete "Sum of Multiples" and "Grains" (see Replace
Difference Of Squares
andGrains
on the core track #761).But since the Track Tool does not address removal yet, I want to make "Nucleotide Count" come immediately after "RNA Transcription", since they're both thematically related and Nucleotide Count uses
Either
while RNA Transcription usesMaybe
for monadic error handling, so they practice the same thing in progressive difficulty.The proposed track reordering looks like:
The text was updated successfully, but these errors were encountered: