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

added FAQ item diff between cats and scalaz #1901

Merged
merged 14 commits into from
Sep 14, 2017
Merged

added FAQ item diff between cats and scalaz #1901

merged 14 commits into from
Sep 14, 2017

Conversation

kailuowang
Copy link
Contributor

No description provided.

Copy link
Contributor

@ceedubs ceedubs left a comment

Choose a reason for hiding this comment

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

Thanks @kailuowang! In general this looks good. I just had a couple of minor thoughts.


The goal for both Cats and [Scalaz](https://github.com/scalaz/scalaz) are the same: facilitate pure functional programming in Scala applications; the underlying core strategy is different. Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation. These libaries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.

Based on this core strategy, Cats took a [modular](/cats/#modularity) approach and focuses on providing core, [binary compatible](/cats/#a-namebinary-compatibility-and-versioning), [approachable](/cats/#approachability) and [efficient](/cats/#efficiency) abstractions. It also takes great effort in providing a welcoming and supportive [community environment](https://gitter.im/typelevel/cats) and a comprehensive beginner-friendly [documentation](/cats/#documentation).
Copy link
Contributor

Choose a reason for hiding this comment

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

When discussing the supportive community, I think that it might make sense to point out that the community is governed by the code of conduct, as this is another difference from scalaz.

@@ -8,7 +8,7 @@ position: 4
# Frequently Asked Questions

## Questions

* [What is the difference between cats and scalaz](#diff-scalaz)
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe this shouldn't be the first item in the list. I think that a lot of people come to Cats without familiarity with Scalaz, so something like "What imports do I need" would probably be a more straightforward first item for them than introducing another FP library.

@codecov-io
Copy link

codecov-io commented Sep 8, 2017

Codecov Report

Merging #1901 into master will increase coverage by 0.24%.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1901      +/-   ##
==========================================
+ Coverage    95.2%   95.44%   +0.24%     
==========================================
  Files         248      250       +2     
  Lines        4379     4570     +191     
  Branches      125      125              
==========================================
+ Hits         4169     4362     +193     
+ Misses        210      208       -2
Impacted Files Coverage Δ
core/src/main/scala/cats/data/IndexedStateT.scala 100% <0%> (ø)
...in/scala/cats/data/IndexedReaderWriterStateT.scala 100% <0%> (ø)
...rc/main/scala/cats/laws/discipline/Arbitrary.scala 92.75% <0%> (+0.69%) ⬆️
core/src/main/scala/cats/data/package.scala 88.88% <0%> (+3.17%) ⬆️
core/src/main/scala/cats/syntax/monoid.scala 100% <0%> (+100%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d20af7a...c2a1e27. Read the comment docs.

@kailuowang
Copy link
Contributor Author

Thanks @ceedubs , all valid points, addressed.

@@ -36,6 +36,15 @@ import cats.implicits._

This should be all that you need, but if you'd like to learn more about the details of imports than you can check out the [import guide](typeclasses/imports.html).

## <a id="diff-scalaz" href="#diff-scalaz"></a>What is the difference between Cats and Scalaz?

Cats and [Scalaz](https://github.com/scalaz/scalaz) has the same goal: facilitate pure functional programming in Scala applications; the underlying core strategy is different. Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation. These libaries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.
Copy link
Member

Choose a reason for hiding this comment

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

Cats and Scalaz have the same goal

Based on this core strategy, Cats took a [modular](/cats/#modularity) approach and focuses on providing core, [binary compatible](/cats/#a-namebinary-compatibility-and-versioning), [approachable](/cats/#approachability) and [efficient](/cats/#efficiency) abstractions. It provides a welcoming and supportive environment for the [user community](https://gitter.im/typelevel/cats) governed
by the [typelevel code of conduct](https://typelevel.org/conduct). It also takes great effort in supplying a comprehensive and beginner-friendly [documentation](/cats/#documentation).

We believe that both Cats and Scalaz strategies have their merits and shortcomings, and it's a positive thing for the scala community to have both.
Copy link
Contributor

Choose a reason for hiding this comment

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

I saw this in gitter - I think it could either be:

We believe that the Cats and Scalaz strategies have their own merits and shortcomings, and it's a positive thing for the Scala community to have both.

or

We believe that Cats' and Scalaz' strategies have their own merits and shortcomings, and it's a positive thing for the Scala community to have both.

@johnynek
Copy link
Contributor

👍

@kailuowang kailuowang merged commit 7c74048 into master Sep 14, 2017
@kailuowang kailuowang deleted the faq-scalaz branch September 14, 2017 17:06
@@ -36,6 +36,14 @@ import cats.implicits._

This should be all that you need, but if you'd like to learn more about the details of imports than you can check out the [import guide](typeclasses/imports.html).

## <a id="diff-scalaz" href="#diff-scalaz"></a>What is the difference between Cats and Scalaz?

Cats and [Scalaz](https://github.com/scalaz/scalaz) have the same goal: facilitate pure functional programming in Scala applications; the underlying core strategy is different. Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation. These libaries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.
Copy link
Contributor

Choose a reason for hiding this comment

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

This might flow better:

Cats and Scalaz have the same goal: to facilitate pure functional programming in Scala applications. However, the underlying core strategy is different;


Cats and [Scalaz](https://github.com/scalaz/scalaz) have the same goal: facilitate pure functional programming in Scala applications; the underlying core strategy is different. Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation. These libaries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.

Based on this core strategy, Cats took a [modular](/cats/#modularity) approach and focuses on providing core, [binary compatible](/cats/#a-namebinary-compatibility-and-versioning), [approachable](/cats/#approachability) and [efficient](/cats/#efficiency) abstractions. It provides a welcoming and supportive environment for the [user community](https://gitter.im/typelevel/cats) governed
Copy link
Contributor

Choose a reason for hiding this comment

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

cats takes*?

Cats and [Scalaz](https://github.com/scalaz/scalaz) have the same goal: facilitate pure functional programming in Scala applications; the underlying core strategy is different. Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation. These libaries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.

Based on this core strategy, Cats took a [modular](/cats/#modularity) approach and focuses on providing core, [binary compatible](/cats/#a-namebinary-compatibility-and-versioning), [approachable](/cats/#approachability) and [efficient](/cats/#efficiency) abstractions. It provides a welcoming and supportive environment for the [user community](https://gitter.im/typelevel/cats) governed
by the [typelevel code of conduct](https://typelevel.org/conduct). It also takes great effort in supplying a comprehensive and beginner-friendly [documentation](/cats/#documentation).
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm really not sure we can say this. I don't know where else we say this in the docs but I really don't think it's the case.

Copy link
Contributor Author

@kailuowang kailuowang Sep 14, 2017

Choose a reason for hiding this comment

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

Not sure which part you are referring to, is it "great effort" or "comprehensive" or "beginner-friendly"?

@edmundnoble
Copy link
Contributor

Eh slightly too late ;)

@kailuowang
Copy link
Contributor Author

@edmundnoble no worries, I will submit another PR to address your feedback.

@edmundnoble
Copy link
Contributor

Thanks, we also had some discussion on "comprehensive" and "great effort" in the cats gitter room.

@kailuowang
Copy link
Contributor Author

@edmundnoble I would've been hesitant to say that myself, but the recent trend of contributions on the documentation side is really encouraging (20+ documentation PRs in the last 30 days).
@LukaJCB is really taking the initiatives on documentation (and other stuff too, thanks again @LukaJCB) on #1801
We are definitely not there yet, but I think we are making good progress. Maybe the language can be improved a bit. How would you phrase it?

@kailuowang kailuowang mentioned this pull request Sep 14, 2017
@kailuowang kailuowang added this to the 1.0.0-RC1 milestone Oct 13, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants