# Sylvester.AbstractAlgebra 0.2.1.2

There is a newer version of this package available.
See the version list below for details.
`Install-Package Sylvester.AbstractAlgebra -Version 0.2.1.2`
`dotnet add package Sylvester.AbstractAlgebra --version 0.2.1.2`
`<PackageReference Include="Sylvester.AbstractAlgebra" Version="0.2.1.2" />`
For projects that support PackageReference, copy this XML node into the project file to reference the package.
`paket add Sylvester.AbstractAlgebra --version 0.2.1.2`
`#r "nuget: Sylvester.AbstractAlgebra, 0.2.1.2"`
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
```// Install Sylvester.AbstractAlgebra as a Cake Addin

// Install Sylvester.AbstractAlgebra as a Cake Tool
#tool nuget:?package=Sylvester.AbstractAlgebra&version=0.2.1.2```
``````// Use the Sylvester abstract algebra package
Paket.Package["Sylvester.AbstractAlgebra"]

open System
open Sylvester
``````
``````// Define an infinite sequence of strings
let c = infiniteSeq ((+) 65 >> Char.ConvertFromUtf32)
c
``````
``````Seq (seq ["A"; "B"; "C"; "D"; ...])
``````
``````// Define a monoid using c and the string concat operator (+)
let Cat = Monoid(c, (+), "")
Cat
``````
``````seq
[("A", "B", "AB"); ("B", "C", "BC"); ("C", "D", "CD"); ("D", "E", "DE"); ...]
``````
``````// Use a custom operator
let (++) = Cat.Op
let a, b = "Nancy", "Drew"
a++b

// All types and operators are strongly types
//a ++ 4
``````
``````"NancyDrew"
``````
``````let Pad = Morph(Cat, fun x -> x.PadLeft 10)
``````
``````let pad = Pad.Map
``````
``````pad a ++ pad b
``````
``````"     Nancy      Drew"
``````
``````pad a ++ b
``````
``````"     NancyDrew"
``````
``````
``````

### NuGet packages

This package is not used by any NuGet packages.

### GitHub repositories

This package is not used by any popular GitHub repositories.