An open API service indexing awesome lists of open source software.

https://github.com/brendanzab/algebra

Abstract algebra for Rust (still very much a WIP!)
https://github.com/brendanzab/algebra

Last synced: 25 days ago
JSON representation

Abstract algebra for Rust (still very much a WIP!)

Awesome Lists containing this project

README

          

# Abstract algebra for Rust

[![Join the chat at https://gitter.im/brendanzab/algebra](https://badges.gitter.im/brendanzab/algebra.svg)](https://gitter.im/brendanzab/algebra?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

[![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)