(.require [library [lux (.except) [abstract ["[0]" equivalence (.only Equivalence)]] [data [binary [\\format (.only Format)]]] [meta [type ["[0]" nominal (.except def)]]]]] ["[0]" // [encoding ["[1][0]" unsigned (.only U2)]]]) (def .public length //unsigned.bytes/2) (nominal.def .public (Index kind) U2 (def .public index (All (_ kind) (-> U2 (Index kind))) (|>> abstraction)) (def .public value (-> (Index Any) U2) (|>> representation)) (def .public equivalence (All (_ kind) (Equivalence (Index kind))) (at equivalence.functor each ..value //unsigned.equivalence)) (def .public format (All (_ kind) (Format (Index kind))) (|>> representation //unsigned.format/2)) )