Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into bifunctor-compose
Browse files Browse the repository at this point in the history
  • Loading branch information
adelbertc committed Jun 1, 2016
2 parents 87063b9 + c43625e commit c97a3c8
Show file tree
Hide file tree
Showing 225 changed files with 5,565 additions and 3,891 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ project/boot
target
.ensime
.ensime_lucene
.ensime_cache
TAGS
\#*#
*~
Expand All @@ -16,3 +17,4 @@ TAGS
.sbtrc
*.sublime-project
*.sublime-workspace
tests.iml
11 changes: 10 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@ git:

scala:
- 2.10.6
- 2.11.7
- 2.11.8

script:
- scripts/travis-publish.sh

# http://austinpray.com/ops/2015/09/20/change-travis-node-version.html
install:
- rm -rf ~/.nvm && git clone https://github.com/creationix/nvm.git ~/.nvm && (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) && source ~/.nvm/nvm.sh && nvm install $TRAVIS_NODE_VERSION
- pip install --user codecov

notifications:
webhooks:
urls:
Expand All @@ -21,12 +26,16 @@ env:
global:
- secure: Kf44XQFpq2QGe3rn98Dsf5Uz3WXzPDralS54co7sqT5oQGs1mYLYZRYz+I75ZSo5ffZ86H7M+AI9YFofqGwAjBixBbqf1tGkUh3oZp2fN3QfqzazGV3HzC+o41zALG5FL+UBaURev9ChQ5fYeTtFB7YAzejHz4y5E97awk934Rg=
- secure: QbNAu0jCaKrwjJi7KZtYEBA/pYbTJ91Y1x/eLAJpsamswVOvwnThA/TLYuux+oiZQCiDUpBzP3oxksIrEEUAhl0lMtqRFY3MrcUr+si9NIjX8hmoFwkvZ5o1b7pmLF6Vz3rQeP/EWMLcljLzEwsrRXeK0Ei2E4vFpsg8yz1YXJg=
- TRAVIS_NODE_VERSION="4"
- CATS_BOT_BUILD=true
cache:
directories:
- $HOME/.sbt/0.13/dependency
- $HOME/.sbt/boot/scala*
- $HOME/.sbt/launchers
- $HOME/.ivy2/cache
- $HOME/.nvm

before_cache:
- du -h -d 1 $HOME/.ivy2/cache
- du -h -d 2 $HOME/.sbt/
Expand Down
20 changes: 20 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,30 @@ A successful open-source project relies upon the community to:
This file lists the people whose contributions have made Cats
possible:

* 3rdLaw
* Aaron Levin
* Adelbert Chang
* Aldo Stracquadanio
* Alessandro Lacava
* Alexey Levan
* Alissa Pajer
* Alistair Johnson
* Amir Mohammad Saied
* Andrew Jones
* Angelo Genovese
* Antoine Comte
* Arya Irani
* Ash Pook
*
* Benjamin Thuillier
* Binh Nguyen
* Bobby Rauchenberg
* Brendan McAdams
* Cody Allen
* Colt Frederickson
* Dale Wijnand
* Daniel Spiewak
* Dave Gurnell
* Dave Rostron
* David Allsopp
* David Gregory
Expand All @@ -40,19 +48,25 @@ possible:
* Eugene Yokota
* Feynman Liang
* Frank S. Thomas
* Ian McIntosh
* ImLiar
* Jean-Rémi Desjardins
* Jisoo Park
* Josh Marcus
* Juan Pedro Moreno
* Julien Richard-Foy
* Julien Truffaut
* Kailuo Wang
* Kenji Yoshida
* Long Cao
* Luis Angel Vicente Sanchez
* Luis Sanchez
* Luke Wyman
* Marc Siegel
* Markus Hauck
* Matt Martin
* Matthias Lüneberg
* Max Worgan
* Michael Pilquist
* Mike Curry
* Miles Sabin
Expand All @@ -61,21 +75,27 @@ possible:
* Pascal Voitot
* Paul Phillips
* Pavkin Vladimir
* Pere Villega
* Peter Neyens
* Philip Wills
* Raúl Raja Martínez
* Rintcius Blok
* Rob Norris
* Romain Ruetschi
* Ross A. Baker
* Ryan Case
* Sarunas Valaskevicius
* Shunsuke Otani
* Sinisa Louc
* Stephen Carman
* Stephen Judkins
* Stew O'Connor
* Sumedh Mungee
* Tomas Mikula
* Travis Brown
* Wedens
* Yosef Fertel
* yilinwei
* Zach Abbott

We've tried to include everyone, but if you've made a contribution to
Expand Down
138 changes: 138 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,141 @@
## Version 0.6.0

> 2016 May 19
Version 0.6.0 is the sixth release.

Highlights of this release:

* [#990](https://github.com/typelevel/cats/pull/990): Separate free package into its own module
* [#1001](https://github.com/typelevel/cats/pull/1001): Introduce cats-kernel and remove algebra dependency

This release also includes some API changes:

* [#1046](https://github.com/typelevel/cats/pull/1046): summon `ApplicativeErrorSyntax` for `F[_]` instead of `F[_, _]`
* [#1034](https://github.com/typelevel/cats/pull/1034): Don't combine lefts on `Xor` and `XorT` `combine`
* [#1018](https://github.com/typelevel/cats/pull/1018): Remove blocking (JVM-only) Future instances
* [#877](https://github.com/typelevel/cats/pull/877): Remove required laziness in Prod, fixes #615


And additions:

* [#1032](https://github.com/typelevel/cats/pull/1032): Added `Coproduct` `fold`
* [#1028](https://github.com/typelevel/cats/pull/1028): Added `withFilter` for `OptionT`
* [#1014](https://github.com/typelevel/cats/pull/1014): Added `Monoid` instance for `WriterT`
* [#1029](https://github.com/typelevel/cats/pull/1029): Added an `ApplicativeError` instance for `Kleisli` and a `MonadError[Option, Unit]` to `std.option`
* [#1023](https://github.com/typelevel/cats/pull/1023): Add `XorT#fromEither`
* [#984](https://github.com/typelevel/cats/pull/984): Add `Validated.ensure`
* [#1020](https://github.com/typelevel/cats/pull/1020): Add `Traverse.traverseM`


And some code improvements:

* [#1015](https://github.com/typelevel/cats/pull/1015): Add `Apply.map2Eval` and allow traverse laziness
* [#1024](https://github.com/typelevel/cats/pull/1024): Override reverse on reversed `PartialOrder` to return original instance
* [#880](https://github.com/typelevel/cats/pull/880): Optimize `Eq[Vector[A]]` instance
* [#1019](https://github.com/typelevel/cats/pull/1019): Use `Future#successful` in `pureEval` when possible

And bug fixes:

* [#1011](https://github.com/typelevel/cats/pull/1011): Add missing type parameters.

And some other improvements to the organization documentation, tutorials, laws and tests, including:

* [#1045](https://github.com/typelevel/cats/pull/1045): Add a link to the `OptionT` documentation from the monad docs.
* [#1043](https://github.com/typelevel/cats/pull/1043): Add notes about kind-projector usage in docs
* [#1042](https://github.com/typelevel/cats/pull/1042): Cats 0.5.0 no longer pre-release
* [#1036](https://github.com/typelevel/cats/pull/1036): Add FPiS to the "Resources for Learners" section
* [#1035](https://github.com/typelevel/cats/pull/1035): Run kernel-law tests for JS as part of build
* [#991](https://github.com/typelevel/cats/pull/991): Replace `~>` with `NaturalTransformation`
* [#1027](https://github.com/typelevel/cats/pull/1027): Remove unnecessary `nelSemigroup` from `traverse` doc
* [#1022](https://github.com/typelevel/cats/pull/1022): Add law-checking for `asMeetPartialOrder` and `asJoinPartialOrder`
* [#990](https://github.com/typelevel/cats/pull/990): Separate free package into its own module


## Version 0.5.0

> 2016 April 28
Version 0.5.0 is the fifth release.

This release includes some API changes:

`cats.laws.discipline.eq` no longer provides `Eq` instances for `Tuple2` and `Tuple3`, these instances and together with some other new instances for `Tuple`s are now provided by `cats.std.tuple` (through inheriting the instance trait defined in algebra 0.4.2).

* [#910](https://github.com/typelevel/cats/pull/910): Remove `Streaming` and `StreamingT`
* [#967](https://github.com/typelevel/cats/pull/967): `product` and `map` can be implemented in terms of `ap`
* [#970](https://github.com/typelevel/cats/pull/970): Renamed `Kleisli#apply`to `ap`
* [#994](https://github.com/typelevel/cats/pull/994): updated to latest algebra (brought in all the new goodies)

And additions:

* [#853](https://github.com/typelevel/cats/pull/853): Adds a new `LiftTrans` typeclass
* [#864](https://github.com/typelevel/cats/pull/864): Add `Bifoldable`
* [#875](https://github.com/typelevel/cats/pull/875): Add `.get` method to `StateT`
* [#884](https://github.com/typelevel/cats/pull/884): Add `Applicative` syntax
* [#886](https://github.com/typelevel/cats/pull/886): Add `map` method to `OneAnd`
* [#927](https://github.com/typelevel/cats/pull/927): `XorT.ensure` method
* [#925](https://github.com/typelevel/cats/pull/925): Stack-safe `foldM`
* [#922](https://github.com/typelevel/cats/pull/922): Add `tell` and `writer` syntax for creating `Writers`.
* [#903](https://github.com/typelevel/cats/pull/903): Add `Bitraverse`
* [#928](https://github.com/typelevel/cats/pull/928): Add missing `Show` instances
* [#940](https://github.com/typelevel/cats/pull/940): More flexible `TransLift`
* [#946](https://github.com/typelevel/cats/pull/946): Added `OptionT.none`
* [#947](https://github.com/typelevel/cats/pull/947): Syntax for `ApplicativeError`
* [#971](https://github.com/typelevel/cats/pull/971): Add `toValidatedNel` to `Xor`
* [#973](https://github.com/typelevel/cats/pull/973): Add `flatMapF` for `StateT`
* [#985](https://github.com/typelevel/cats/pull/985): Add object `reducible` for reducible syntax
* [#996](https://github.com/typelevel/cats/pull/996): Add `SemigroupK` instance for `Xor`
* [#998](https://github.com/typelevel/cats/pull/998): Add `SemigroupK` instance for `Validated`
* [#986](https://github.com/typelevel/cats/pull/986): Add `Bitraverse` instances for `Validated` and `XorT`


And bug fixes:

* [#873](https://github.com/typelevel/cats/pull/873): Fix `OptionIdOps.some` to always return `Some`
* [#958](https://github.com/typelevel/cats/pull/958): Switch off scaladoc generation for Scala 2.10 due to macro problems
* [#955](https://github.com/typelevel/cats/pull/955): Rename `Id` instances to `idInstances` to make selective import easier


And removals:

* [#910](https://github.com/typelevel/cats/pull/910): Remove `Streaming` and `StreamingT`


And some other improvements to the documentation, tutorials, laws and tests, including:

* [#880](https://github.com/typelevel/cats/pull/880): Optimize `Eq[Vector[A]]` instance
* [#878](https://github.com/typelevel/cats/pull/878): Fix bug in freemonad doc
* [#870](https://github.com/typelevel/cats/pull/870): Fixed doc string for `StateT`'s `runEmptyA()`
* [#866](https://github.com/typelevel/cats/pull/866): Add some tests for `Coproduct` and `WriterT`
* [#883](https://github.com/typelevel/cats/pull/883): Delegate to `Traverse.sequence` in `Applicative.sequence`
* [#893](https://github.com/typelevel/cats/pull/893): Add `Reducible` laws
* [#923](https://github.com/typelevel/cats/pull/923): Make `Call.loop` `@tailrec` optimized
* [#916](https://github.com/typelevel/cats/pull/916): add `-P:scalajs:mapSourceURI` option
* [#909](https://github.com/typelevel/cats/pull/909): Make `Bifunctor` universal
* [#905](https://github.com/typelevel/cats/pull/905): make `Unapply` serializable
* [#902](https://github.com/typelevel/cats/pull/902): Make table in `Kleisli` readable
* [#897](https://github.com/typelevel/cats/pull/897): Add `Prod` tests
* [#938](https://github.com/typelevel/cats/pull/938): Onward to scala 2.11.8
* [#941](https://github.com/typelevel/cats/pull/941): Type class composition and `MonadState` tests
* [#949](https://github.com/typelevel/cats/pull/949): Add .ensime_cache to gitignore
* [#954](https://github.com/typelevel/cats/pull/954): Switch to use nodeJsEnv as default jsEnv to build scala.js
* [#956](https://github.com/typelevel/cats/pull/956): Upgrade scala.js from 0.6.7 -> 0.6.8
* [#960](https://github.com/typelevel/cats/pull/960): More `Reducible` tests
* [#962](https://github.com/typelevel/cats/pull/962): Improving test coverage
* [#964](https://github.com/typelevel/cats/pull/964): Clarify stabilty guarantees; drop 'proof of concept' and 'experimental'
* [#972](https://github.com/typelevel/cats/pull/972): Fix swapped f and g in `invariant` docs
* [#979](https://github.com/typelevel/cats/pull/979): Fix outdated import for `cats.syntax.apply._`
* [#995](https://github.com/typelevel/cats/pull/995): Move coverage away from bash
* [#1002](https://github.com/typelevel/cats/pull/1002): Correct the URL for *Data types à la carte*
* [#1005](https://github.com/typelevel/cats/pull/1005): fix broken link in foldable docs


As always thanks to everyone who filed issues, participated in the Cats Gitter
channel, submitted code, or helped review pull requests.



## Version 0.4.1

> 2016 February 4
Expand Down
8 changes: 8 additions & 0 deletions PROCESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ You can get a list of changes between release tags `v0.1.2` and
messages is a good way to get a summary of what happened, although it
does not account for conversations that occured on Github.

Once the relevant documentation changes have been committed, new
[release notes](https://github.com/typelevel/cats/releases) should be
added. You can add a release by clicking the "Draft a new release" button
on that page, or if the relevant release already exists, you can click
"Edit release".

The website should then be updated via `sbt docs/ghpagesPushSite`.

### Conclusion

Ideally this document will evolve and grow as the project
Expand Down
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@

### Overview

Cats is a proof-of-concept library intended to provide abstractions
for functional programming in Scala.
Cats is a library which provides abstractions for functional programming in Scala.

The name is a playful shortening of the word *category*.

Expand All @@ -23,21 +22,27 @@ To get started with SBT, simply add the following to your `build.sbt`
file:

```scala
libraryDependencies += "org.typelevel" %% "cats" % "0.4.1"
libraryDependencies += "org.typelevel" %% "cats" % "0.6.0"
```

This will pull in all of Cats' modules. If you only require some
functionality, you can pick-and-choose from amongst these modules
(used in place of `"cats"`):

* `cats-macros`: Macros used by Cats syntax (*required*).
* `cats-core`: Core type classes and functionality (*required*).
* `cats-kernel`: Small set of basic type classes (*required*).
* `cats-core`: Most core type classes and functionality (*required*).
* `cats-laws`: Laws for testing type class instances.
* `cats-free`: Free structures such as the free monad, and supporting type classes.

Release notes for Cats are available in [CHANGES.md](CHANGES.md).

*Cats 0.4.1 is a pre-release: there are not currently source- or
binary-compatibility guarantees.*
*Cats is still under active development. While we don't anticipate any
major redesigns, changes that are neither source nor binary
compatibility are to be expected in upcoming cats releases. We will
update the minor version of cats accordingly for such changes. Once
cats 1.0 is released (ETA: Q3 2016), there will be an increased focus
on making changes in compatible ways.*

### Documentation
Among the goals of Cats is to provide approachable and useful documentation.
Expand Down Expand Up @@ -111,6 +116,7 @@ Initially Cats will support the following modules:
* `macros`: Macro definitions needed for `core` and other projects.
* `core`: Definitions for widely-used type classes and data types.
* `laws`: The encoded laws for type classes, exported to assist third-party testing.
* `cats-free`: Free structures such as the free monad, and supporting type classes.
* `tests`: Verifies the laws, and runs any other tests. Not published.

As the type class families grow, it's possible that additional modules
Expand Down
2 changes: 1 addition & 1 deletion bench/src/main/scala/cats/bench/FoldBench.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cats.bench

import algebra.std.string._
import cats.data.Const
import cats.std.string._
import cats.std.list._
import cats.{Foldable, Traverse}
import org.openjdk.jmh.annotations.{Benchmark, Scope, State}
Expand Down
2 changes: 0 additions & 2 deletions bench/src/main/scala/cats/bench/TrampolineBench.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import cats._
import cats.implicits._
import cats.free.Trampoline

import scala.util.control.TailCalls

@State(Scope.Benchmark)
class TrampolineBench {

Expand Down
Loading

0 comments on commit c97a3c8

Please sign in to comment.