{-# language DataKinds #-} {-# language FlexibleInstances #-} {-# language PolyKinds #-} {-# language ScopedTypeVariables #-} {-# language TypeApplications #-} {-# language TypeFamilies #-} {-# language TypeOperators #-} {-# language UndecidableInstances #-} {-| Description : Definition of schemas This module gives a set of combinators to define schemas in the sense of Avro or Protocol Buffers. In order to re-use definitions at both the type and term levels, the actual constructors are defined in types ending with @B@, and are parametrized by the type used to describe identifiers. The versions without the suffix set this parameter to 'Type', and are thought as the API to be used in the type-level. If you use 'reflectSchema' to obtain a term- level representation, the parameter is set to 'TypeRep'. -} module Mu.Schema.Definition ( -- * Definition of schemas Schema', Schema, SchemaB , TypeDef, TypeDefB(..) , ChoiceDef(..) , FieldDef, FieldDefB(..) ,