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

In exercises/concept/functions-generating-functions/, added: #591

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

JaumeAmoresDS
Copy link
Contributor

.docs/instructions.md
.docs/introduction.md
.meta/exemplar.clj

   .docs/instructions.md
   .docs/introduction.md
   .meta/exemplar.clj
Copy link
Contributor

github-actions bot commented Nov 4, 2023

Hello. Thanks for opening a PR on Exercism 🙂

We ask that all changes to Exercism are discussed on our Community Forum before being opened on GitHub. To enforce this, we automatically close all PRs that are submitted. That doesn't mean your PR is rejected but that we want the initial discussion about it to happen on our forum where a wide range of key contributors across the Exercism ecosystem can weigh in.

You can use this link to copy this into a new topic on the forum. If we decide the PR is appropriate, we'll reopen it and continue with it, so please don't delete your local branch.

If you're interested in learning more about this auto-responder, please read this blog post.


Note: If this PR has been pre-approved, please link back to this PR on the forum thread and a maintainer or staff member will reopen it.

@github-actions github-actions bot closed this Nov 4, 2023
@bobbicodes bobbicodes reopened this Nov 4, 2023
@bobbicodes
Copy link
Member

I like what you've done. I'm just a little bit concerned because we haven't taught map/reduce yet (or hashmaps for that matter!). If it weren't for this issue, I'd say it would fit perfectly, but it would leave the uninitiated student needing to learn these concepts elsewhere.

@JaumeAmoresDS
Copy link
Contributor Author

You're right @bobbicodes. Maybe we could just avoid suggesting to use map or reduce, so that the student can use any other mechanism of their choice, like loops, recursion, etc? Although, in all honesty, those haven't been introduced either... In my case, I applied map and reduce to solve other exercises in the clojure track. In one of the exercises, I applied recursion but my mentor suggested to use reduce, for instance.

@JaumeAmoresDS
Copy link
Contributor Author

JaumeAmoresDS commented Nov 5, 2023

@bobbicodes, on the other hand, I didn't fully understand the difficulty you mentioned about adding a concept for map and another for reduce. From what I know (very little, but something), adding basic information about map, for example, should be pretty straightforward: one or two sentences. Also, since it is not a complicated concept (at least not in how it's used most of the time), with just one or two exercises might be enough?

Reduce, on the other hand, seems to have more use cases (but maybe just as juxt, since you even dedicated a blog to it?). However, I would dedicate multiple concepts that have a hierarchy of difficulty, something like this:

graph TD;
A{basic reduce} --> B{advanced reduce 1};
A{basic reduce} --> C{advanced reduce 2};

Unless you have something more elaborate in mind, I could volunteer on creating a basic concept for map, another for reduce, and then one or two concept exercises for each. I think I have bandwidth for doing that. If it needs to be more exhaustive / elaborate then I would need to wait until later in the future... please let me know!

Thanks,

Jaume

@bobbicodes
Copy link
Member

Map and reduce are high priority and would be a welcome addition, as they form the cornerstone of functional programming. I'm unlikely to contribute them myself because I've been busy working on other things lately, so if you were so inclined that would be wonderful :)

As far as this exercise goes, my gut reaction is that if it could be made simpler it would be more effective, in other words not requiring any additional strategies. Would that even be possible, or would it make the exercise fall apart? It's an almost obligatory suggestion because the learning exercises are meant to be just on the edge of being excessively simple, and when they are not, well that's when we start to receive feedback from frustrated students.

Of course if it were added after introducing other concepts it might be fine, because then it would only be introducing one new thing at a time.

@JaumeAmoresDS
Copy link
Contributor Author

JaumeAmoresDS commented Nov 5, 2023

Thanks @bobbicodes. If I understand correctly, I could first add map and reduce, and then we could have the current PR approved because solving the exercise would be much easier after map and reduce are in the track, is that correct? If you think I can submit a really simple explanation, one for map, and the other for reduce, and then submit a "concept exercise" for each one with just one or two tasks in the exercise, then I can certainly do it! Another possibility is to have a single concept exercise for both, and in that exercise we can have 3 tasks: one for using map alone, one for using reduce alone, and one for using both map and reduce in the same function...
Maybe the most "difficult" part (given my lack of inspiration) is to come up with a sort of story for the tasks. If it's just something like "given X, implement a function that returns Y", then it would be quite easy to write.

@bobbicodes
Copy link
Member

bobbicodes commented Nov 5, 2023

Yeah, my most recent thoughts were to expand the syllabus significantly by taking a much simpler approach and making the exercises smaller, just like you're saying. More like along the lines of 4clojure or the Clojure Koans where it's right to the point and not trying to be an elaborate coding challenge.

I even thought to take problems right from 4clojure, because it's pretty comprehensive and the original authors have passed it on to the community, making them fair game. They have the additional bonus of already being set up as unit tests, albeit very simple ones.

For example, see the exercise teaching comp: https://4clojure.oxal.org/#/problem/58

@JaumeAmoresDS
Copy link
Contributor Author

That would be great, do you think then that we could be using the exercises from 4clojure directly? That would be a very fast way to cover many concepts.

@bobbicodes
Copy link
Member

Yeah, that's what I'm thinking! It's proven pedagogically sound, the problems were taken from various sources like Project Euler and Ninety-Nine Lisp Problems and organized into a well-ordered system, then a couple years ago the authors decided to let the domain expire. They said it had become outdated and they were no longer interested in maintaining it. It was revived as 4everClojure by the community but they have no ownership of the problem set, and I think it would be quite appropriate for them to be inherited by Exercism in some form.

@JaumeAmoresDS
Copy link
Contributor Author

Looking up 4clojure, I just read the list of websites dedicated to practicing clojure, in the practical.li site... so many nice possibilities!

https://practical.li/clojure/coding-challenges/

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.

None yet

2 participants