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

Ideas for new tasks/changes to the existing tasks #56

Open
1 of 6 tasks
chshersh opened this issue Oct 2, 2020 · 2 comments
Open
1 of 6 tasks

Ideas for new tasks/changes to the existing tasks #56

chshersh opened this issue Oct 2, 2020 · 2 comments
Labels

Comments

@chshersh
Copy link
Contributor

chshersh commented Oct 2, 2020

Just a collection of some ideas to improve the course and make some tasks better. A few things I have on my mind and discussed with @vrom911:

  • Chapter 1: A simpler task before lastDigit that doesn't require thinking about corner cases.
  • Chapter 2: Maybe eta-reduction task where you shouldn't eta-reduce?
  • Chapter 3: A task on typeclasses to write the type of a function like foo x y = show (x + y).
  • Chapter 3: Make sure that the first fight is only one round, no recursion.
  • Chapter 3: Clarify, that in Append people don't need to create a separate List newtype for lists.
  • Chapter 4: The advanced task can make use of Monads to practice this topic more.
@chshersh chshersh added the task label Oct 2, 2020
@grossmeyer
Copy link

Task 4 "next" is too trivial and I think a very basic recursion example might be a better fit. I would remove Task 4, renumber Tasks 5-7 as 4-6 and insert a problem like this for a new task 7:

Enter an integer such that if the number is > 0 it will call the function recursively as n - 1 or n < 0 call recursively as n + 1 until n reaches 0. A sample solution might look like this:

countToZero :: (Num a, Num p, Ord a) => a -> p
countToZero n
| n == 0 = 0
| n < 0 = countToZero (n + 1)
| n > 0 = countToZero (n - 1)

(Sorry for not so great formatting)

If I was writing this in JavaScript, I would actually want to console.log(n) as we count towards 0, not actually sure how to do that in Haskell yet! Only completed Chapter 1, but I am very much enjoying my first toe dip into Haskell. Else, all answers just give you zero, instead of something neat like this (if you did console.log(n) at each iteration):

countToZero 3
3 2 1 0
countToZero (-4)
-4 -3 -2 -1 0

In any case, I think putting in a very basic recursion problem would help make the "final boss" easier to think through (although I don't think task 10 is exceptionally difficult as is either).

@twolodzko
Copy link

This probably falls out of the scope, but it would be great if there was Chapter 5 on reading & writing files, IO and do stuff. I find this the most confusing and discouraging part of Haskell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants