-
-
Notifications
You must be signed in to change notification settings - Fork 849
Open
Labels
Description
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 likefoo x y = show (x + y)
.Chapter 3: Make sure that the first fight is only one round, no recursion.Chapter 3: Clarify, that inAppend
people don't need to create a separateList
newtype for lists.Chapter 4: The advanced task can make use of Monads to practice this topic more.To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel.
vrom911, grossmeyer, bitwombat and adrwtr
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
grossmeyer commentedon Oct 6, 2020
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 commentedon Oct 30, 2020
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.