prairie-0.0.4.0: A first class record field library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Prairie.AsRecord

Description

This module contains a newtype AsRecord which is used to provide a variety of default instances for types based on their Record instance.

Synopsis

Documentation

newtype AsRecord rec Source #

This newtype is intended for use with DerivingVia.

For an example use, let's consider this User datatype:

data Foo = Foo
    { ints :: [Int]
    , char :: First Char
    }

mkRecord ''Foo

Let's say we want to define an instance of Semigroup for this type, so that we can combine two of them. Ordinarily, we'd need to write a boilerplate-y instance:

instance Semigroup Foo where
    f0 <> f1 = Foo
        { ints = f0.ints <> f1.ints
        , char = f0.char <> f1.char
        }

With DerivingVia, we can use AsRecord to provide it easily:

deriving via AsRecord Foo instance Semigroup Foo

Since: 0.0.4.0

Constructors

AsRecord 

Fields

Instances

Instances details
(Record rec, FieldDict Semigroup rec, FieldDict Monoid rec) => Monoid (AsRecord rec) Source #

Since: 0.0.4.0

Instance details

Defined in Prairie.AsRecord

Methods

mempty :: AsRecord rec #

mappend :: AsRecord rec -> AsRecord rec -> AsRecord rec #

mconcat :: [AsRecord rec] -> AsRecord rec #

(Record rec, FieldDict Semigroup rec) => Semigroup (AsRecord rec) Source #

Since: 0.0.4.0

Instance details

Defined in Prairie.AsRecord

Methods

(<>) :: AsRecord rec -> AsRecord rec -> AsRecord rec #

sconcat :: NonEmpty (AsRecord rec) -> AsRecord rec #

stimes :: Integral b => b -> AsRecord rec -> AsRecord rec #