grapefruit-records-0.1.0.6: A record system for Functional Reactive Programming

Safe HaskellSafe
LanguageHaskell98

Data.Record.Optionality

Description

This module provides support for optionality records.

Optionality records are used to specify interfaces with optional input data. Compared to an ordinary record type, an optionality record type states for every field whether it is required or optional. This is done by a slight abuse of field names. A field name name is replaced by either Req name or Opt name. Optionality record types are never used directly in types of actual values. Instead, they are converted into ordinary record types with the type functions All and Required.

Synopsis

Documentation

data Req name Source #

A marker for required fields.

Instances

OptRecord optRecord => OptRecord ((:&) optRecord ((:::) (Req name) sort)) Source # 

Associated Types

type All ((:&) optRecord ((:::) (Req name) sort) :: * -> *) :: * -> * Source #

type Required ((:&) optRecord ((:::) (Req name) sort) :: * -> *) :: * -> * Source #

type All ((:&) optRecord ((:::) (Req name) sort)) Source # 
type All ((:&) optRecord ((:::) (Req name) sort)) = (:&) (All optRecord) ((:::) name sort)
type Required ((:&) optRecord ((:::) (Req name) sort)) Source # 
type Required ((:&) optRecord ((:::) (Req name) sort)) = (:&) (Required optRecord) ((:::) name sort)

data Opt name Source #

A marker for optional fields.

Instances

OptRecord optRecord => OptRecord ((:&) optRecord ((:::) (Opt name) sort)) Source # 

Associated Types

type All ((:&) optRecord ((:::) (Opt name) sort) :: * -> *) :: * -> * Source #

type Required ((:&) optRecord ((:::) (Opt name) sort) :: * -> *) :: * -> * Source #

type All ((:&) optRecord ((:::) (Opt name) sort)) Source # 
type All ((:&) optRecord ((:::) (Opt name) sort)) = (:&) (All optRecord) ((:::) name sort)
type Required ((:&) optRecord ((:::) (Opt name) sort)) Source # 
type Required ((:&) optRecord ((:::) (Opt name) sort)) = Required optRecord

class OptRecord optRecord Source #

The class of all optionality record types.

Associated Types

type All optRecord :: * -> * Source #

Converts an optionality record type into an ordinary record type by dropping all Req and Opt annotations.

type Required optRecord :: * -> * Source #

Extracts all required fields from an optionality record type and drops their Req annotations.

Instances

OptRecord X Source # 

Associated Types

type All (X :: * -> *) :: * -> * Source #

type Required (X :: * -> *) :: * -> * Source #

OptRecord optRecord => OptRecord ((:&) optRecord ((:::) (Opt name) sort)) Source # 

Associated Types

type All ((:&) optRecord ((:::) (Opt name) sort) :: * -> *) :: * -> * Source #

type Required ((:&) optRecord ((:::) (Opt name) sort) :: * -> *) :: * -> * Source #

OptRecord optRecord => OptRecord ((:&) optRecord ((:::) (Req name) sort)) Source # 

Associated Types

type All ((:&) optRecord ((:::) (Req name) sort) :: * -> *) :: * -> * Source #

type Required ((:&) optRecord ((:::) (Req name) sort) :: * -> *) :: * -> * Source #