-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Support for enrichment of standard library classes #791
Comments
Perhaps Stacy Curl's Pimpathon project might be of interest here: https://github.com/stacycurl/pimpathon |
I also don't like the name. And yes such a library would need to depend on cats, perhaps in a foo-cats module. |
Paging @stacycurl ... time for a name change? |
I think you know that I'm very fond of the name, I think of an exuberance of bling, etc & nothing to do with sex. No one has approached me saying they are offended, but then few are using it. I enjoy the independence of taking it whichever way I wish (I have maintained backwards compatibility though), you are very welcome to scrutinise it for ideas (and mistakes). |
I think the criteria @benhutchison proposes make sense for whether it should be in core or an extra module/library. String to number with |
… with Option.cata
@benhutchison should we close this out now that https://github.com/benhutchison/mouse is a typelevel incubator project? |
Yes, belatedly. apologies missed this mention somehow... |
This issue began with I posted a question to cats gitter - is there support for conversion of
Boolean
toOption
values, like theoption[A](a: A)
method in Scalaz.Two other example where people have/want-to enrich standard lib classes with extra behavior:
The scalaz.syntax.std package has a bunch more that could be supported if/when useful or requested, egs:
Opinion seemed to run against adding such "conveniences" into cats core in general, eg @travisbrown response. But in following discussion there seemed to be agreement they have value and for putting them somewhere in a new module or project (working title
extra-syntax
).Our immediate goals are to answer:
What should the scope/charter of
extra-syntax
be? I'd say the primary goal is Improvement/enrichment of the standard library classes, with secondary goal increase familiarity & portability for Scalaz programmers.The principle I stumble to articulate though is, when does code go into
extra-syntax
vs cats syntax?Proposal:
Option
=>Xor
) go into cats coreAnything else goes to extra, such as conversions between std types, or extra methods like
option.cata
.Or is the distinction more about barrier-to-entry/level-of-consensus? If everyone agrees its central, it can go to cats core, if there's doubt its goes to extras? Not too keen on this, I'd prefer a more objective criteria ideally..
Should it be a new project or a new module? My feeling at present is that it'll prove to be pretty small, only the most valuable tip of
scalaz.syntax.std
will be requested, and so a module with cats is preferable to another project. Not a strongly held position however.The text was updated successfully, but these errors were encountered: