enumerate-0.2.2: sources/Enumerate/Test.hs
{-# LANGUAGE LambdaCase, DeriveGeneric, DeriveAnyClass #-}
{-# LANGUAGE FlexibleInstances #-}
{-| test that nullary method calls are shared.
TODO cross-module benchmark and core check.
@
stack build --flag enumerate:dump-core && open core/Enumerate.Test.html
@
-}
module Enumerate.Test where
import Enumerate
import Prelude
import Data.Set (Set)
import GHC.Generics (Generic)
data B a
= B0 a
| B1 (Maybe a) (Either a a)
| B2 (a, a)
| B3 (Set a)
deriving (Show,Eq,Ord,Generic,Enumerable)
instance Bounded (B Bool) where
minBound = minBound_enumerable' -- fast via laziness of lists, but arrays are spine-strict
maxBound = maxBound_enumerable'
instance Enum (B Bool) where
toEnum = toEnum_enumerable'
fromEnum = fromEnum_enumerable' -- needs Ord
things = [minBound_enumerable', maxBound_enumerable', toEnum_enumerable' 9] :: [B Bool]