large-records-0.1.0.0: Efficient compilation for large records, linear in the size of the record
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Record.Internal.Record

Synopsis

Record description

data Record a Source #

Record description

Constructors

Record 

Fields

Instances

Instances details
Functor Record Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

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

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

Foldable Record Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

fold :: Monoid m => Record m -> m #

foldMap :: Monoid m => (a -> m) -> Record a -> m #

foldMap' :: Monoid m => (a -> m) -> Record a -> m #

foldr :: (a -> b -> b) -> b -> Record a -> b #

foldr' :: (a -> b -> b) -> b -> Record a -> b #

foldl :: (b -> a -> b) -> b -> Record a -> b #

foldl' :: (b -> a -> b) -> b -> Record a -> b #

foldr1 :: (a -> a -> a) -> Record a -> a #

foldl1 :: (a -> a -> a) -> Record a -> a #

toList :: Record a -> [a] #

null :: Record a -> Bool #

length :: Record a -> Int #

elem :: Eq a => a -> Record a -> Bool #

maximum :: Ord a => Record a -> a #

minimum :: Ord a => Record a -> a #

sum :: Num a => Record a -> a #

product :: Num a => Record a -> a #

Traversable Record Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

traverse :: Applicative f => (a -> f b) -> Record a -> f (Record b) #

sequenceA :: Applicative f => Record (f a) -> f (Record a) #

mapM :: Monad m => (a -> m b) -> Record a -> m (Record b) #

sequence :: Monad m => Record (m a) -> m (Record a) #

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

Defined in Data.Record.Internal.Record

Methods

showsPrec :: Int -> Record a -> ShowS #

show :: Record a -> String #

showList :: [Record a] -> ShowS #

data Field a Source #

Record field description

Constructors

Field 

Fields

  • fieldName :: String

    Field name

  • fieldType :: Type

    Type of the field

  • fieldIndex :: Int

    Index of the field (field 0, field 1, ..)

    This is strictly speaking redundant information, as this is already implied by the position of the field in recordFields. However, since we do a lot of positional processing (every field corresponds to a vector element), it is convenient to have the index readily available.

  • fieldVal :: a

    Value associated with this field (Nothing if not present)

Instances

Instances details
Functor Field Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

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

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

Foldable Field Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

fold :: Monoid m => Field m -> m #

foldMap :: Monoid m => (a -> m) -> Field a -> m #

foldMap' :: Monoid m => (a -> m) -> Field a -> m #

foldr :: (a -> b -> b) -> b -> Field a -> b #

foldr' :: (a -> b -> b) -> b -> Field a -> b #

foldl :: (b -> a -> b) -> b -> Field a -> b #

foldl' :: (b -> a -> b) -> b -> Field a -> b #

foldr1 :: (a -> a -> a) -> Field a -> a #

foldl1 :: (a -> a -> a) -> Field a -> a #

toList :: Field a -> [a] #

null :: Field a -> Bool #

length :: Field a -> Int #

elem :: Eq a => a -> Field a -> Bool #

maximum :: Ord a => Field a -> a #

minimum :: Ord a => Field a -> a #

sum :: Num a => Field a -> a #

product :: Num a => Field a -> a #

Traversable Field Source # 
Instance details

Defined in Data.Record.Internal.Record

Methods

traverse :: Applicative f => (a -> f b) -> Field a -> f (Field b) #

sequenceA :: Applicative f => Field (f a) -> f (Field a) #

mapM :: Monad m => (a -> m b) -> Field a -> m (Field b) #

sequence :: Monad m => Field (m a) -> m (Field a) #

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

Defined in Data.Record.Internal.Record

Methods

showsPrec :: Int -> Field a -> ShowS #

show :: Field a -> String #

showList :: [Field a] -> ShowS #

Combinators

matchRecordFields :: forall a b. [(String, b)] -> Record a -> (Record (a, Maybe b), [String]) Source #

Match field values against field definitions

We explicit mark missing fields; one use case for this is record construction, where we want to issue a warning for missing fields.