aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 30950ab70909d9a355c9f616c2a033d64c16b3f9 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# algebraic-structures

Provides useful algebraic structures for programming using parameterized module.

## Install

Run `chicken-install` in the project's root directory.

```
$ cd algebraic-structures
$ chicken-install
```

## Supported Features

- Semigroup: =(algebraic-structures semigroup)=
  - Number (product): =(algebraic-structures number product semigroup)=
  - Number (sum): =(algebraic-structures number sum semigroup)=
  - List: =(algebraic-structures list semigroup)=
  - Vector: =(algebraic-structures vector semigroup)=
  - Stream: =(algebraic-structures stream semigroup)=
- Semigroup.reduce: =(algebraic-structures semigroup reduce)=
- Monoid: =(algebraic-structures monoid)=
  - Number (product): =(algebraic-structures number product monoid)=
  - Number (sum): =(algebraic-structures number sum monoid)=
  - List: =(algebraic-structures list monoid)=
  - Vector: =(algebraic-structures vector monoid)=
  - Stream: =(algebraic-structures stream monoid)=
- Monoid.fold: =(algebraic-structures monoid fold)=
- Group
  - Number (product): =(algebraic-structures number product group)=
  - Number (sum): =(algebraic-structures number sum group)=
- Foldable: =(algebraic-structures foldable)= 
  - List: =(algebraic-structures list foldable)=
  - Vector: =(algebraic-structures vector foldable)=
  - Stream: =(algebraic-structures stream foldable)=
- Reducible: =(algebraic-structures reducible)= 
  - List: =(algebraic-structures list reducible)=
  - Vector: =(algebraic-structures vector reducible)=
  - Stream: =(algebraic-structures stream reducible)=
- Functor: =(algebraic-structures functor)= 
  - List: =(algebraic-structures list functor)=
  - Vector: =(algebraic-structures vector functor)=
  - Stream: =(algebraic-structures stream functor)=
- Applicative: =(algebraic-structures applicative)= 
  - List: =(algebraic-structures list applicative)=
  - List (zip): =(algebraic-structures list zip applicative)=
  - Vector (zip): =(algebraic-structures vector zip applicative)=
  - Stream: =(algebraic-structures stream applicative)=
  - Stream (zip): =(algebraic-structures stream zip applicative)=
- Monad: =(algebraic-structures monad)= 
  - List: =(algebraic-structures list monad)=
  - Stream: =(algebraic-structures stream monad)=
- Alternative: =(algebraic-structures alternative)= 
  - List: =(algebraic-structures list alternative)=
  - Stream: =(algebraic-structures stream alternative)=

## Examples

- Monad
  - [optonal](./examples/optional.scm)
  - [state](./examples/optional.scm)