algebra
current status
The code in this repository was moved into Cats in cats#3918. All future development will occur there. Algebra will continue to release under the same artifact name and maintain binary compatibility with the 2.x series.
the vision
This repo represents an attempt to unify the basic algebraic type
classes from Spire and
Algebird. By targeting just
these type classes, we will distribute an algebra
package with no
dependencies (except for catskernel) that works with Scala 2.11 and
2.12, which can be shared by all Scala libraries interested in abstract
algebra.
Since the creation of Algebra, we have also decided to interoperate with the Cats project. Algebra and Cats interoperate using the catskernel module.
See the Algebra website for more information. The latest API docs are hosted at Algebra's ScalaDoc index.
getting algebra
Algebra supports Scala 2.11, 2.12 and 2.13 and is available from Sonatype (and Maven Central). In addition to the JVM, Algebra also supports Scala.js.
To use algebra in your own projects, include this snippet in your
build.sbt
file:
libraryDependencies += "org.typelevel" %% "algebra" % "2.0.0"
If you want to use Algebra's laws, you can include those as well with this snippet:
libraryDependencies += "org.typelevel" %% "algebralaws" % "2.0.0"
what we have so far
This repo has been seeded with most of the contents of
spire.algebra
, and has been modified to fit an
initiallyconservative and shared vision for algebraic type classes.
Discussions over removals and additions should take place on the issue
tracker or on relevant pull requests.
Projects using Algebra
participants
Anyone who wants to participate should feel free to open issues or send pull requests to this repo.
The following people are Algebra maintainers (i.e. have push access):
development process
Please make a pull request against the master
branch. For those who
can merge pull requests, we follow these rules:

Do not merge your own PR unless N people have signedoff on the PR (e.g. given a thumbsup, +1, shipit, etc) and Travis is green.

If you are not the author, and you see (N  1) signoffs and Travis is green, just click merge and delete the branch.

Currently, N = 2.
algebra overview
Algebra uses type classes to represent algebraic structures. You can use these type classes to represent the abstract capabilities (and requirements) you want generic parameters to possess.
For a tour of the Algebraic structures that algebra
offers, see the
extensive
overview on the Algebra website.
Code of Conduct
See the Code of Conduct
Copyright and License
All code is available to you under the MIT license, available at http://opensource.org/licenses/mitlicense.php and also in the COPYING file.
Copyright the maintainers, 20152016.