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

Add a Why section to README #1052

Merged
merged 2 commits into from
Jun 29, 2016
Merged

Add a Why section to README #1052

merged 2 commits into from
Jun 29, 2016

Conversation

adelbertc
Copy link
Contributor

Inspired by a colleague who had a bit of trouble figuring out what problem Cats was solving

@non
Copy link
Contributor

non commented Jun 2, 2016

Looks reasonable to me. 👍

@DavidGregory084
Copy link
Member

I think maybe you could expand on the phrase leaving a bit to be desired as this does not seem to describe the problem with these abstractions being absent - maybe something like limiting the level of abstraction and therefore the reusability of code written against the standard library alone?

Scala provides many tools for functional programming such as algebraic data types, higher kinded types
and implicits. However, common abstractions such as `Monoid`, `Monad`, and `Traverse` are currently missing from
the standard library, leaving a bit to be desired. Among the goals of Cats is to fill this gap, and to provide a
foundation for an [ecosystem of pure, typeful libraries](http://typelevel.org/projects/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning: bike shedding - I'm sorry.

However, common abstractions such as Monoid, Monad, and Traverse are currently missing from the standard library, leaving a bit to be desired.

The word missing here suggests that Monoid etc should be in the standard library, which is an opinion that many may hold, but at the end of the day is an opinion. I'd be inclined to focus on the positive rather than the negative. What do you think of something like the following?

The scala language supports both object-oriented and functional programming, and this is reflected in the hybrid OO/FP approach of its standard library. Cats is an exploration into what the standard library might look like if it focused mostly on functional programming. It takes advantage of scala features such as implicits and higher-kinded types to provide type classes such as Monoid, Monad, and Traverse, which provide composable abstractions for common use-cases. While Cats encourages reuse of some standard library data structures such as List and Option, it also provides some of its own algebraic data types such as Xor and Validated. <Typelevel plug here>

@adelbertc
Copy link
Contributor Author

@ceedubs Good point, reworded it a bit, lmk what you think

@zmccoy
Copy link
Member

zmccoy commented Jun 21, 2016

Thanks for adding this.

@codecov-io
Copy link

Current coverage is 88.80%

Merging #1052 into master will increase coverage by 0.17%

@@             master      #1052   diff @@
==========================================
  Files           214        228    +14   
  Lines          2717       3028   +311   
  Methods        2655       2980   +325   
  Messages          0          0          
  Branches         57         46    -11   
==========================================
+ Hits           2408       2689   +281   
- Misses          309        339    +30   
  Partials          0          0          

Sunburst

Powered by Codecov. Last updated by 168069f...cfa14ac

@ceedubs
Copy link
Contributor

ceedubs commented Jun 29, 2016

👍

@ceedubs ceedubs merged commit ed21654 into typelevel:master Jun 29, 2016
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.

7 participants