disco-0.2: Functional programming language for teaching discrete math.
Copyrightdisco team and contributors
LicenseBSD-3-Clause
Maintainerbyorgey@gmail.com
Safe HaskellSafe-Inferred
LanguageHaskell2010

Disco.Exhaustiveness.Possibilities

Description

Meaningful types and functions for describing combinations of different possible options.

Synopsis

Documentation

data Possibilities a Source #

Instances

Instances details
Applicative Possibilities Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Functor Possibilities Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Methods

fmap :: (a -> b) -> Possibilities a -> Possibilities b #

(<$) :: a -> Possibilities b -> Possibilities a #

Monoid (Possibilities a) Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Semigroup (Possibilities a) Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Show a => Show (Possibilities a) Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Eq a => Eq (Possibilities a) Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

Ord a => Ord (Possibilities a) Source # 
Instance details

Defined in Disco.Exhaustiveness.Possibilities

retSingle :: Monad m => a -> m (Possibilities a) Source #

allCombinations :: [Possibilities a] -> Possibilities [a] Source #

List all possible paths through the list of Possibilites

Ex. > allCombinations [ Possibilities [1] , Possibilities [2,3] , Possibilities [4] , Possibilities [5,6,7] ] === Possibilities {getPossibilities = [[1,2,4,5] ,[1,2,4,6] ,[1,2,4,7] ,[1,3,4,5] ,[1,3,4,6] ,[1,3,4,7] ]}

2 5 1 4 --6 / 3 7

If any any of the Possibilities is empty, an empty Possibility is returned

In other words, this lists all elements of the cartesian product of multiple sets