StrictCheck-0.1.0: StrictCheck: Keep Your Laziness In Check

Safe HaskellNone
LanguageHaskell2010

Test.StrictCheck.Internal.Omega

Description

Internal module: This module does not make any stability guarantees, and may not adhere to the PVP.

This module defines the Omega type, which has only one inhabitant: the infinite chain of successors. Any function which consumes an Omega is functionally equivalent to any other; likewise for those which produce an Omega. However, they may have radically differing strictness behaviors. It is for this reason that we have use for this type in the course of random example generation.

Synopsis

Documentation

data Omega Source #

The type with one inhabitant: the infinite chain of successors

Constructors

Succ Omega 

Instances

Generic Omega Source # 

Associated Types

type Rep Omega :: * -> * #

Methods

from :: Omega -> Rep Omega x #

to :: Rep Omega x -> Omega #

Generic Omega Source # 

Associated Types

type Code Omega :: [[*]] #

Methods

from :: Omega -> Rep Omega #

to :: Rep Omega -> Omega #

HasDatatypeInfo Omega Source # 

Associated Types

type DatatypeInfoOf Omega :: DatatypeInfo #

Methods

datatypeInfo :: proxy Omega -> DatatypeInfo (Code Omega) #

Produce Omega Source # 
Shaped Omega Source # 

Associated Types

type Shape Omega :: (* -> *) -> * Source #

Methods

project :: (forall x. Shaped x => x -> f x) -> Omega -> Shape Omega f Source #

embed :: (forall x. Shaped x => f x -> x) -> Shape Omega f -> Omega Source #

match :: Shape Omega f -> Shape Omega g -> (forall (xs :: [*]). All * Shaped xs => Flattened * (Shape Omega) f xs -> Maybe (Flattened * (Shape Omega) g xs) -> result) -> result Source #

render :: Shape Omega (K * x) -> RenderLevel x Source #

type Rep Omega Source # 
type Rep Omega = D1 * (MetaData "Omega" "Test.StrictCheck.Internal.Omega" "StrictCheck-0.1.0-GjX4F07u34LCxxlyaDL9Ok" False) (C1 * (MetaCons "Succ" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Omega)))
type Code Omega Source # 
type DatatypeInfoOf Omega Source # 
type Shape Omega Source # 

forceOmega :: Int -> Omega -> () Source #

Evaluate n constructors of a given Omega value, returning unit