ramda / ramda-fantasy

:ram::sparkles: Fantasy-Land compatible types for easy integration with Ramda.js
MIT License
1.5k stars 95 forks source link

final release #157

Open davidchambers opened 7 years ago

davidchambers commented 7 years ago

The Ramda team has decided that this library is no longer serving the JavaScript FP community well. It has not kept up with changes to the Fantasy Land spec, and many of the data types lack useful features available in other libraries.

The consensus among the Fantasy Land team is that the proliferation of implementations of the same handful of algebraic data types is a trend which should be reversed. The more implementations of an ADT exist, the more unlawful implementations are likely to exist. Furthermore, it's impractical to mix and match implementations, resulting in functions such as this:

//    sanctuaryEitherToRamdaFantasyEither :: SEither a b -> RFEither a b
const sanctuaryEitherToRamdaFantasyEither = S.either(Either.Left, Either.Right);

There are, though, a number of people using ramda-fantasy. We wish to wind down this project without affecting these users, so of course the npm releases will remain available indefinitely. Furthermore, @scott-christopher has suggested merging some of the open pull requests and making one final release. I think this is an excellent idea.

In fact, I suggest going one step further. What do people think of this approach?

  1. Merge open pull requests which do not contain breaking changes.
  2. Release v0.8.0.
  3. Update #131 to provide compatibility with Fantasy Land v3.2.x.
  4. Merge #131.
  5. Release v1.0.0.
  6. Update the readme to state that this project is no longer under development and to provide links to replacement libraries.

/cc @SimonRichardson

SimonRichardson commented 7 years ago

Go go go πŸ‘Œ

CrossEye commented 7 years ago

:herb:

kwijibo commented 7 years ago

I'd just like to say thanks to the contributors for having done this in the first place - I found the ramda-fantasy implementations, and especially the documentation, a great help in understanding some of the different ADTs. (I also miss its presence from the Ramda REPL!)

tusharmath commented 7 years ago

@davidchambers Could you share links of possible libraries one should use for new projects?

davidchambers commented 7 years ago

Here are the proposed alternatives:

† Currently only available as part of Sanctuary.

scott-christopher commented 7 years ago

All PRs other than #131 have been merged. I'll go ahead and release 0.8 shortly.

scott-christopher commented 7 years ago

0.8.0 has been released. #131 can now be updated.

buzzdecafe commented 7 years ago

Thanks @scott-christopher !

ds82 commented 7 years ago

Until sanctuary-maybe and sanctuary-either are available, what should I use for new projects? I prefer ramda over sanctuary .. I would rather not install sanctuary just to have Maybe & Either ..

Any thoughts on that?

buzzdecafe commented 7 years ago

you can keep using RF, but it will not be getting further upgrades (unless someone else takes it up); or you can try folktale as well:

jgranduel commented 7 years ago

Just to mention folktale-2.0.0 (http://folktale.origamitower.com/) released on 2017-07-11 has breaking changes in its API:

Both are "stable" in their stability index.

niksosf commented 7 years ago

HI guys, just wanted to mention this library that seems to do a whole lot of fp stuff but barely anyone notices: urbandrone/futils it even has transducers and trampolining. let me know what you think.

buzzdecafe commented 7 years ago

@niksosf thanks for the heads up, i'll keep an eye on it

danielo515 commented 6 years ago

Seems there is no a consistent library to use for FP. The recommended replacements require the installation of an entire library to just use a couple of types. Seems that we should cherry-pick the best implementation of each library, which seems like a total waste of time and resources to my eye. I think it would be better to take one approach or the other: provide a single library with all the required stuff or to split every function and type into a separate library. To be honest, I'm a bit confused about which toolset of FP libraries to choose.

Regards

CrossEye commented 6 years ago

@danielo515: Please note several things

danielo515 commented 6 years ago

Thanks for your suggestions. I think that as long as the types implements the fantasyland specification and the functions can understand them I'll be fine. However libraries like folktale seems to be on it's own way. Am I right? You are also mentioning to only import certain types, do you mean tree shaking ?

CrossEye commented 6 years ago

You can require or import Ramda functions individually:

const map = require('ramda/src/map')

Or you could probably use some tree-shaking code against the whole Ramda export.

For Folktale, as far as I know, they still support the FantasyLand specifications..

davidchambers commented 6 years ago

Over the past few days I have published these packages: