# smash: Smash products, wedge products, and pointed products

[ bsd3, data, library ] [ Propose Tags ]

Smash products, wedge products, and pointed products in Haskell

Versions [RSS] [faq] 0.1.0.0, 0.1.1.0, 0.1.2 CHANGELOG.md base (>=4.11 && <4.16), bifunctors (==5.5.*), binary (==0.8.*), deepseq (==1.4.*), hashable (==1.3.*), mtl, template-haskell (>=2.2 && <3.0) [details] BSD-3-Clause (c) 2020-2021 Emily Pillmore Emily Pillmore emilypi@cohomolo.gy Revision 1 made by topos at 2021-03-25T15:59:47Z Data https://github.com/emilypi/smash https://github.com/emilypi/smash/issues head: git clone https://github.com/emilypi/smash.git by topos at 2021-03-23T19:54:48Z LTSHaskell:0.1.2, NixOS:0.1.2, Stackage:0.1.2 463 total (16 in the last 30 days) (no votes yet) [estimated by Bayesian average] λ λ λ Docs available Last success reported on 2021-03-23

## Modules

[Index] [Quick Jump]

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

#### Maintainer's Corner

For package maintainers and hackage trustees

Candidates

[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). The Wedge datatype 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). The Can datatype 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). The Smash datatype 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 of Can over Wedge. 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