{- Id: stl:6Z6S5ztA-l3_RfoW-uOIW~K0-04t7R_3-KIiByhE-1W4rPFA#henry-heart-survive Name: StrictTypes Version: 0.1.0 Description: Confined generalized algebraic data types (GADT) Author: Dr Maxim Orlovsky Copyright (C) 2023-2024 UBIDECO Institute. All rights reserved. License: Apache-2.0 -} @context typelib StrictTypes import Std#delete-roman-hair use AlphaLodash#halt-alamo-mimic use AlphaNumLodash#percent-bingo-caesar use AlphaCapsLodash#duet-hammer-labor use AlphaSmallLodash#pioneer-eagle-spell @mnemonic(herman-chariot-madrid) data Dependency : id TypeLibId, name LibName @mnemonic(collect-museum-penguin) data EnumVariants : {Variant ^ 1..0xff} @mnemonic(public-toronto-velvet) data ExternRef : libId TypeLibId, semId SemId @mnemonic(cotton-store-figure) data FieldInlineRef : name FieldName, ty InlineRef @mnemonic(rent-olympic-gemini) data FieldInlineRef1 : name FieldName, ty InlineRef1 @mnemonic(lithium-hippie-capital) data FieldInlineRef2 : name FieldName, ty InlineRef2 @mnemonic(trumpet-neptune-gondola) data FieldLibRef : name FieldName, ty LibRef @mnemonic(present-flute-herman) data FieldName : Std.AlphaSmallLodash, [Std.AlphaNumLodash ^ ..0x63] @mnemonic(gemini-rainbow-loyal) data FieldSemId : name FieldName, ty SemId @mnemonic(exotic-october-option) data Ident : Std.AlphaLodash, [Std.AlphaNumLodash ^ ..0x63] @mnemonic(fame-local-critic) data InlineRef : inline TyInlineRef1 | named SemId | extern ExternRef @mnemonic(twin-maximum-darwin) data InlineRef1 : inline TyInlineRef2 | named SemId | extern ExternRef @mnemonic(orient-sting-arthur) data InlineRef2 : named SemId | extern ExternRef @mnemonic(germany-ammonia-parole) data ItemCase : unnamedField U8 | namedField (U8, FieldName) | unionVariant (U8, VariantName) | arrayItem#16 () | listItem () | setItem () | mapKey () | mapValue () @mnemonic(cabaret-toyota-arena) data LibName : Std.AlphaCapsLodash, [Std.AlphaNumLodash ^ ..0x63] @mnemonic(equal-hello-amigo) data LibRef : inline TyInlineRef | named SemId | extern ExternRef @mnemonic(spoon-magnum-guest) data MemoryLayout : items [TypeInfo ^ ..0xffffffff] @mnemonic(neuron-ginger-dispute) data NamedFieldsInlineRef : [FieldInlineRef ^ 1..0xff] @mnemonic(fire-alarm-toyota) data NamedFieldsInlineRef1 : [FieldInlineRef1 ^ 1..0xff] @mnemonic(life-carrot-garbo) data NamedFieldsInlineRef2 : [FieldInlineRef2 ^ 1..0xff] @mnemonic(edison-kinetic-village) data NamedFieldsLibRef : [FieldLibRef ^ 1..0xff] @mnemonic(chapter-zigzag-hunter) data NamedFieldsSemId : [FieldSemId ^ 1..0xff] @mnemonic(wolf-taxi-druid) data NestedCase : newType TypeFqn? | option () | byteStr#16 () | asciiStr TypeFqn? | uniStr () | rStr (TypeFqn?, TypeFqn?, Sizing) @mnemonic(deliver-arrow-boxer) data Primitive : U8 @mnemonic(logic-absorb-hilton) data SemId : [Byte ^ 32] @mnemonic(courage-alien-salon) data Sizing : min U64, max U64 @mnemonic(janet-lecture-taboo) data SymbolRef : libName LibName , tyName TypeName , libId TypeLibId , semId SemId @mnemonic(alice-bicycle-europe) data SymbolicSys : symbols Symbols, types TypeSystem @mnemonic(polaris-escape-santana) data Symbols : libs {Dependency}, symbols {TypeSymbol ^ ..0xffffff} @mnemonic(extend-exile-fish) data TyInlineRef : primitive Primitive | unicode () | enum#3 EnumVariants | union UnionVariantsInlineRef | tuple UnnamedFieldsInlineRef | struct NamedFieldsInlineRef | array (InlineRef, U16) | list (InlineRef, Sizing) | set (InlineRef, Sizing) | map (InlineRef, InlineRef, Sizing) @mnemonic(morgan-freedom-indigo) data TyInlineRef1 : primitive Primitive | unicode () | enum#3 EnumVariants | union UnionVariantsInlineRef1 | tuple UnnamedFieldsInlineRef1 | struct NamedFieldsInlineRef1 | array (InlineRef1, U16) | list (InlineRef1, Sizing) | set (InlineRef1, Sizing) | map (InlineRef1, InlineRef1, Sizing) @mnemonic(veteran-culture-clarion) data TyInlineRef2 : primitive Primitive | unicode () | enum#3 EnumVariants | union UnionVariantsInlineRef2 | tuple UnnamedFieldsInlineRef2 | struct NamedFieldsInlineRef2 | array (InlineRef2, U16) | list (InlineRef2, Sizing) | set (InlineRef2, Sizing) | map (InlineRef2, InlineRef2, Sizing) @mnemonic(vega-beatles-right) data TyLibRef : primitive Primitive | unicode () | enum#3 EnumVariants | union UnionVariantsLibRef | tuple UnnamedFieldsLibRef | struct NamedFieldsLibRef | array (LibRef, U16) | list (LibRef, Sizing) | set (LibRef, Sizing) | map (LibRef, LibRef, Sizing) @mnemonic(armada-matrix-vodka) data TySemId : primitive Primitive | unicode () | enum#3 EnumVariants | union UnionVariantsSemId | tuple UnnamedFieldsSemId | struct NamedFieldsSemId | array (SemId, U16) | list (SemId, Sizing) | set (SemId, Sizing) | map (SemId, SemId, Sizing) @mnemonic(lemon-vampire-gloria) data TypeFqn : lib LibName, name TypeName @mnemonic(iron-junior-jordan) data TypeInfo : depth U32 , ty TySemId , fqn TypeFqn? , item ItemCase? , nested [NestedCase ^ ..0xff] @mnemonic(consul-sharon-cabaret) data TypeLib : name LibName , dependencies {Dependency ^ ..0xff} , externTypes {LibName -> ^ ..0xff {SemId -> TypeName}} , types {TypeName -> ^ 1.. TyLibRef} @mnemonic(torpedo-accent-silver) data TypeLibId : [Byte ^ 32] @mnemonic(edgar-carol-mystery) data TypeName : Std.AlphaCapsLodash, [Std.AlphaNumLodash ^ ..0x63] @mnemonic(sigma-miami-elite) data TypeSymbol : id SemId, fqn TypeFqn? @mnemonic(chant-beach-junior) data TypeSysId : [Byte ^ 32] @mnemonic(alias-address-shave) data TypeSystem : {SemId -> ^ ..0xffffff TySemId} @mnemonic(ventura-siren-salon) data UnionVariantsInlineRef : {U8 -> ^ ..0xff VariantInfoInlineRef} @mnemonic(gram-tommy-people) data UnionVariantsInlineRef1 : {U8 -> ^ ..0xff VariantInfoInlineRef1} @mnemonic(dominic-screen-trilogy) data UnionVariantsInlineRef2 : {U8 -> ^ ..0xff VariantInfoInlineRef2} @mnemonic(rudolf-bison-stop) data UnionVariantsLibRef : {U8 -> ^ ..0xff VariantInfoLibRef} @mnemonic(maximum-twist-october) data UnionVariantsSemId : {U8 -> ^ ..0xff VariantInfoSemId} @mnemonic(boris-indigo-prime) data UnnamedFieldsInlineRef : [InlineRef ^ 1..0xff] @mnemonic(griffin-frozen-melody) data UnnamedFieldsInlineRef1 : [InlineRef1 ^ 1..0xff] @mnemonic(jordan-baby-spiral) data UnnamedFieldsInlineRef2 : [InlineRef2 ^ 1..0xff] @mnemonic(bread-honey-modest) data UnnamedFieldsLibRef : [LibRef ^ 1..0xff] @mnemonic(oxford-dallas-capitan) data UnnamedFieldsSemId : [SemId ^ 1..0xff] @mnemonic(magic-holiday-aztec) data Variant : name VariantName, tag U8 @mnemonic(icon-menu-fragile) data VariantInfoInlineRef : name VariantName, ty InlineRef @mnemonic(profile-castle-graph) data VariantInfoInlineRef1 : name VariantName, ty InlineRef1 @mnemonic(venus-lotus-abraham) data VariantInfoInlineRef2 : name VariantName, ty InlineRef2 @mnemonic(buffalo-blue-gossip) data VariantInfoLibRef : name VariantName, ty LibRef @mnemonic(radius-cloud-accent) data VariantInfoSemId : name VariantName, ty SemId @mnemonic(theory-austin-before) data VariantName : Std.AlphaSmallLodash, [Std.AlphaNumLodash ^ ..0x63]