The

class and basic operations.
`Field`

# Record fields.

Instances of this class can be combined with the functions and operators in this package.

The source type of the field. I.e. the record type.

The destination type of the field. I.e. the type of the field in question.

(r ~ Src f, Field f) => Field (:-> r a, f) | |

Field (:-> a b) | |

Field (:-> r a, :-> r b, :-> r c) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e, :-> r f) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e, :-> r f, :-> r g) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e, :-> r f, :-> r g, :-> r h) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e, :-> r f, :-> r g, :-> r h, :-> r i) | |

Field (:-> r a, :-> r b, :-> r c, :-> r d, :-> r e, :-> r f, :-> r g, :-> r h, :-> r i, :-> r j) |

# Basic field operators.

(=:) :: Field a => a -> Dst a -> Src a :-> Src aSource

Infix assignment lookalike.

r.#f =: v

returns a modified version of `r`

so that the field corresponding to
`f`

are set to `v`

.

(=~) :: Field a => a -> (Dst a -> Dst a) -> Src a :-> Src aSource

Infix modification lookalike.

r.#f =~ g

returns a modified version of `r`

so that the fields corresponding to
`f`

are modified with the function `g`

.