-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
This issue began with I posted a question to cats gitter - is there support for conversion of Boolean to Option values, like the option[A](a: A) method in Scalaz.
Two other example where people have/want-to enrich standard lib classes with extra behavior:
- Issue Add cata to syntax.option #749
- https://github.com/non/cats/blob/master/core/src/main/scala/cats/syntax/option.scala#L26
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-syntaxbe? 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-syntaxvs cats syntax?Proposal:
- conversions of std types to cats datatypes (eg
Option=>Xor) go into cats core - methods that enable/support using cats typeclasses go into cats core
Anything 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..
- conversions of std types to cats datatypes (eg
-
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.stdwill be requested, and so a module with cats is preferable to another project. Not a strongly held position however.