Skip to content

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

@chshersh

Description

@chshersh
Contributor

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.

Activity

grossmeyer

grossmeyer commented on Oct 6, 2020

@grossmeyer

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

twolodzko commented on Oct 30, 2020

@twolodzko

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @twolodzko@chshersh@grossmeyer

        Issue actions

          Ideas for new tasks/changes to the existing tasks · Issue #56 · kowainik/learn4haskell