/hall/hpack/schemas

Copy path to clipboard

Examples

(S.Package::{ name = "test", version = "0.0.0", library }).library ≡ library

Source

{-| A consistent set of schemas for the provided `rec` type.

NB: Benchmarks, executables, and tests all have the same type, so `Binary` is
the shared form.
-}
let schemas =
λ(rec : (Type → Type) → Type) →
{ Binary = ./Binary/schema (rec ./Binary/Type)
, Common = ./Common/schema (rec ./Common/Type)
, Library = ./Library/schema (rec ./Library/Type)
, Package = ./Package/schema rec
, Sublibrary = ./Sublibrary/schema (rec ./Sublibrary/Type)
}

let S = schemas (λ(f : Type → Type) → f <>)

let library = Some S.Library::{=}

let testSectionsShareTheSchema =
assert
: (S.Package::{ name = "test", version = "0.0.0", library }).library
≡ library

in schemas