| CARVIEW |
smash: Combinators for Maybe types
Smash products are like the These datatype, only with a unit. You can
think of this type as isomorphic to 'Maybe (These a b)'.
[Skip to Readme]
Modules
[Index] [Quick Jump]
Downloads
- smash-0.1.3.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0, 0.1.1.0, 0.1.2, 0.1.3 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.12 && <4.17), bifunctors (>=5.5 && <5.6), binary (>=0.8 && <0.9), deepseq (>=1.4 && <1.5), hashable (>=1.3 && <1.4), mtl, template-haskell (>=2.2 && <3.0) [details] |
| Tested with | ghc ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.2 |
| License | BSD-3-Clause |
| Copyright | (c) 2020-2022 Emily Pillmore <emilypi@cohomolo.gy> |
| Author | Emily Pillmore |
| Maintainer | emilypi@cohomolo.gy |
| Uploaded | by topos at 2022-04-27T00:57:59Z |
| Category | Data |
| Home page | https://github.com/emilypi/smash |
| Bug tracker | https://github.com/emilypi/smash/issues |
| Source repo | head: git clone https://github.com/emilypi/smash.git |
| Distributions | |
| Reverse Dependencies | 7 direct, 0 indirect [details] |
| Downloads | 1126 total (12 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2022-04-27 [all 1 reports] |
Readme for smash-0.1.3
[back to package description]smash: Combinators for Maybe types
This package consists of 3 interesting datatypes and their respective monad transformers:
-
Wedge: Isomorphic to
Maybe (Either a b). TheWedgedatatype represents the coproduct in the category Hask* of pointed Hask types, called a wedge sum. One can derive this type as follows:Either (Maybe a) (Maybe b) ~ (1 + a) + (1 + b) -- units are the same via pushout ~ 1 + a + b ~ Maybe (Either a b) ~ Wedge a b -
Can: Isomorphic to
Maybe (These a b). TheCandatatype represents the product in Hask*. One can derive this as follows:(Maybe a, Maybe a) ~ (1 + a) * (1 + b) -- products distribute over coproducts ~ 1 + b + a + a*b -- coproducts are associative ~ 1 + (b + a + a*b) ~ 1 + These a b ~ Maybe (These a b) ~ Can a b -
Smash: Isomorphic to
Maybe (a,b). TheSmashdatatype represents a special type of product, a smash product, in the category Hask*. The smash product is a symmetric, monoidal tensor in Hask* that is the quotient ofCanoverWedge. It can be derived as follows:Can a b / Wedge a b ~ 1 + a + b + a*b / 1 + a + b -- reassoc coproduct ~ (1 + a + b) + a*b / 1 + a + b -- def. of quotient: (1 + a + b) ~ 1 ~ 1 + a * b ~ Maybe (a,b) ~ Smash a b