exercism / generic-track

MIT License
22 stars 21 forks source link

Ramda #79

Open yosevu opened 3 years ago

yosevu commented 3 years ago

What programming language should we add?

Ramda.js. This is a popular library for practical functional programming in JavaScript. It is actually not a new language, but I think it can be treated as such since it uses a significantly different style of JavaScript that requires knowledge and experience with functional programming concepts that would not fit into the main JavaScript track. I think that there is enough interest in Ramda based on its weekly npm downloads that it would be valuable for people who use it or want to learn it to be able to practice it on Exercism.

What is the official website for the language?

https://ramdajs.com/

Is this a language that comes in many variants? If so, which variant should we support?

NA

Does the language have an official logo? If so

Ramda logo

Attribution rights for logo

Ramda logo artwork © 2014 J. C. Phillipps. Licensed Creative Commons CC BY-NC-SA 3.0.

Does the language have an unofficial logo? If so

NA

Is there a testing framework available for the language?

JavaScript testing frameworks

Is this language listed as 'supported' by Prism.js? If so

javascript

.js

If it is not supported by Prism.js, what is the closest supported language it maps to?

Who will be leading the effort to launch the track?

This is undetermined. I would like to first see whether this kind of track would be possible.

yosevu commented 3 years ago

Pinging @iHiD or @kytrinyx to take a look at this request since it doesn't look like this repo has much activity.

iHiD commented 3 years ago

Thanks! We'll have a think and get back to you :)

yosevu commented 3 years ago

Great! Thank you.

yosevu commented 3 years ago

Hey @iHiD! Just checking back. Have you have had a chance to consider having a Ramda track?

iHiD commented 3 years ago

Hello. I have! Sorry for not replying earlier and thanks for the nudge 👍

So I talked with a couple of people and the consensus is that Ramda is more of a JS framework than a language in its own right.

One person added the following:

It feels like they’re saying that the exercises we currently have don’t lend themselves to practicing the concepts that they’d want you to practice to be a good citizen in the Ramda landscape. If that’s the case, then maybe there are practice exercises that are missing? If the practice exercises are good candidates, but there are no good solutions in that style, maybe they could help contribute the crowdsourced guides for the different approaches.

Does that ring true to you? Rather than creating a whole Ramda track, could we maybe work on creating a series of example solutions and docs that someone could refer to to solve the JS exercises in the Ramda way?

Interested to hear what you think :)

yosevu commented 3 years ago

Thanks for getting back @iHiD!

Yes. Agree 100%. Ramda is not a language and doesn't make sense as a language track. It's a utility library similar to Lodash, but is specifically for functional programming e.g. using functional composition patterns like currying and pipelines, and working with immutable data.

A small example with gigasecond:

// Core JavaScript
const gigasecond = utcDate => new Date(Number(utcDate) + 10E11)

// Ramda
const gigasecond = utcDate => pipe(
  Number,
  add(10E11),
  constructN(1, Date)
)(utcDate)

I love the Exercism platform and mentoring and I think being able to use a library like this would be a great way for people who are interested to learn and practice the functional side of JavaScript.

the exercises we currently have don’t lend themselves to practicing the concepts that they’d want you to practice to be a good citizen in the Ramda landscape.

A clarification here, it is not necessarily that the exercises do not lend themselves to practicing functional JavaScript. I am just not sure how/if it could fit into the JavaScript track. I imagine it would not be the norm to use a library to solve problems or that all mentors would all be able to give feedback on functional solutions to the problems.

maybe they could help contribute the crowdsourced guides for the different approaches

This sounds like a good idea. I'd be interested in understanding how this might work and whether there is a precedent for it.

Does that ring true to you? Rather than creating a whole Ramda track, could we maybe work on creating a series of example solutions and docs that someone could refer to to solve the JS exercises in the Ramda way?

Yes! This sounds great. How would it work with the JavaScript track? For example, it would need different dependencies installed and mentors to be familiar with functional programming and JavaScript.

yosevu commented 3 years ago

Hey @iHiD! Just checking in on this again 😊

Any thoughts on how this could work?

iHiD commented 3 years ago

Hello. Sorry for the slow replies. I'm focussed on getting Exercism v3 over the line right now so don't have much brainspace for anything else. I think I'll be best coming back to this once that's launched and I can think about new things!

yosevu commented 3 years ago

No problem @iHiD. I'll reach out after the Exercism v3 release. Good luck with it!

iHiD commented 3 years ago

Thank you 💙