[go: up one dir, main page]

alga 0.1.0

Abstract algebra for Rust
Documentation
# Abstract algebra for Rust

[![Build Status](https://travis-ci.org/brendanzab/algebra.png?branch=master)](https://travis-ci.org/brendanzab/algebra)

~~~
|(• ◡•)|ノ〵(❍ᴥ❍⋃)     - "ALGEBRAIC!!!"
~~~

Abstract algebra organises organises a wide range of structures into
a logically consistent framework. These classifications can be incredibly useful
for creating composable libraries and APIs.

Examples of types that could be included under the algebraic framework:

- Integers, reals and rationals numbers
- Complex numbers
- Polynomials
- Boolean values
- Matrices and vectors
- Quaternions and octonians
- Strings under concatenation

## Research

### Interesting papers

- [The Scratchpad II Type System: Domains and Subdomains]http://www.csd.uwo.ca/~watt/pub/reprints/1990-miola-spadtypes.pdf
- [Fundamental Algebraic Concepts in Concept-Enabled C++]ftp://cgi.cs.indiana.edu/pub/techreports/TR638.pdf

### Inspiring Libraries

- [Numeric Prelude]http://www.haskell.org/haskellwiki/Numeric_Prelude (Haskell)
- Edward A. Kmett's [algebra package]http://hackage.haskell.org/package/algebra-3.1 (Haskell)
- [YAP: Yet Another Prelude]http://hackage.haskell.org/package/yap (Haskell)
- Agda's [algebra module]http://www.cse.chalmers.se/~nad/listings/lib-0.7/Algebra.html (Agda)
- Idris' [algebra module]https://github.com/idris-lang/Idris-dev/blob/master/libs/prelude/Prelude/Algebra.idr (Idris)
- Felix's [algebra module]http://felix-lang.org/$/usr/local/lib/felix/felix-latest/share/lib/std/algebraic.flx (Felix)
- [non/spire]https://github.com/non/spire (Scala)