Copyright | disco team and contributors |
---|---|
License | BSD-3-Clause |
Maintainer | byorgey@gmail.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Disco.Exhaustiveness.Possibilities
Description
Meaningful types and functions for describing combinations of different possible options.
Synopsis
- data Possibilities a
- retSingle :: Monad m => a -> m (Possibilities a)
- allCombinations :: [Possibilities a] -> Possibilities [a]
- anyOf :: [Possibilities a] -> Possibilities a
- none :: Possibilities a -> Bool
- getPossibilities :: Possibilities a -> [a]
Documentation
data Possibilities a Source #
Instances
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
anyOf :: [Possibilities a] -> Possibilities a Source #
none :: Possibilities a -> Bool Source #
getPossibilities :: Possibilities a -> [a] Source #