| Copyright | (c) Ross Paterson 2021 |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | [email protected] |
| Stability | provisional |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.YAP.FiniteSet
Description
An example instance of the algebraic classes: the semiring of finite sets.
Finite sets
The semiring of sets over a monoid, with union as addition and the
monoid operation lifted to multiplication.
This is equivalent to FiniteMap with a Boolean
semiring as codomain.
Instances
| Show a => Show (FiniteSet a) Source # | |
| Eq a => Eq (FiniteSet a) Source # | |
| Ord a => Ord (FiniteSet a) Source # | |
Defined in Data.YAP.FiniteSet | |
| Ord a => AdditiveMonoid (FiniteSet a) Source # |
|
| (Ord a, Monoid a) => Semiring (FiniteSet a) Source # | |
Construction
Queries
Finite formal languages
type FiniteLanguage a = FiniteSet [a] Source #
Finite formal languages, with (+) as union and (*) as concatenation.
Examples
>>>zero :: FiniteSet StringfromList []>>>one :: FiniteSet StringfromList [""]>>>(singleton "a" + singleton "ab") * (singleton "c" + singleton "bc")fromList ["abbc","abc","ac"]>>>(singleton "a" + singleton "ab")^3fromList ["aaa","aaab","aaba","aabab","abaa","abaab","ababa","ababab"]