Skip to content
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

Switch order of current core exercises #800

Merged
merged 3 commits into from
Mar 8, 2019
Merged

Switch order of current core exercises #800

merged 3 commits into from
Mar 8, 2019

Conversation

sshine
Copy link
Contributor

@sshine sshine commented Feb 27, 2019

Edit: As @petertseng points out below, embed the reasons for deciding into the commit message. As a consequence, the pull request message is updated to reflect this change. This change consists of moving the arguments from the discussion at #798 to this message instead.


As part of The Track Anatomy Project, 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 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 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 Replace Difference Of Squares and Grains 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 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

@sshine sshine mentioned this pull request Feb 27, 2019
2 tasks
@petertseng
Copy link
Member

Although I prefer to discuss a PR using comments on the PR, rather than a linked issue, I think the main objectives I wish to achieve are:

  • For a given change, I want to be able to understand its reasoning and intent.
    • This remains possible because the commit message links to the issue.
    • I recommend that the commit message be updated with a summary of the reasoning for both changes in addition. A short summary such as "We should present Maybe before Either" and "Bob checks multiple properties of a string versus Pangram's one" seems to suffice here.
  • For a given change, I'd like to make it as easy as possible to find all relevant discussion for it, so discussion for it should all happen in one place.
    • Therefore, I found it advantageous to follow suit, and since the existing discussion was in Restructure Haskell core track #798, I followed suit.
    • This means that I have to try to avoid discussion of the change here.

This means that, given the above are followed, I do not appear to have a reason to prefer one of the two choices (discussion in the same PR, discussion in a linked issue) over the other.

@petertseng
Copy link
Member

well, I suppose the difference is that I will discuss the intent of the changes in the linked issue, and discuss whether the intent is good. In the PR, I will discuss the mechanics of the change, and whether it actually matches the stated intent.

(I still don't mind combining the two discussions into the same place, but for PR where both avenues of discussion may be contentious, then it may be worth separating)

For this issue, the mechanics are fairly uncontentious, but just to be thorough, it is possible to verify that this PR does indeed only perform the two reorderings that it claimed to do.

diff -u <(ruby ../problem-specifications/tree.rb --flat <(git show master:config.json)) <(ruby ../problem-specifications/tree.rb --flat config.json)
--- /dev/fd/11	2019-03-06 01:05:18.000000000 +0000
+++ /dev/fd/12	2019-03-06 01:05:18.000000000 +0000
@@ -10,12 +10,12 @@
 hello-world
 leap
 space-age
-bob
 pangram
+bob
 collatz-conjecture
 rna-transcription
-sum-of-multiples
 nucleotide-count
+sum-of-multiples
 grains

 [side]

Copy link
Member

@petertseng petertseng left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made it clear already that I approve of the two changes in their current form

I still highly recommend a summary of the rationale for both changes be included in the commit message, so that it is still available without being connected to the internet.

@sshine sshine changed the title Track Tool Step 1: Switch order of core exercises Switch order of current core exercises Mar 6, 2019
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
@sshine
Copy link
Contributor Author

sshine commented Mar 6, 2019

Hi @petertseng, and thanks for your patience while best I try to place the discussion.

I've updated the commit message and the PR message to reflect the specific change.

In the PR, I will discuss the mechanics of the change, and whether it actually matches the stated intent.
(I still don't mind combining the two discussions into the same place, but for PR where both avenues of discussion may be contentious, then it may be worth separating)

In retrospect I think I would have preferred to keep all discussion of concrete changes to the PRs and more abstract, high-level discussion at #798. I'm not sure what's least confusing at this point; since some choices are made in a bigger picture, I'd like to go with some division a la mechanics vs. abstract reasons.

Copy link
Member

@petertseng petertseng left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I certainly don't object to the whole reasoning being placed in the commit message, so I'm also able to approve this

@sshine sshine marked this pull request as ready for review March 7, 2019 14:19
@sshine sshine merged commit 189f262 into exercism:master Mar 8, 2019
@sshine sshine deleted the track-tool-step-1 branch March 8, 2019 07:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants