Module: Rigor::Type::PlainLattice
- Included in:
- BoundMethod, Constant, DataClass, DataInstance, HashShape, IntegerRange, Intersection, Nominal, Singleton, StructClass, StructInstance, Tuple
- Defined in:
- lib/rigor/type/plain_lattice.rb
Overview
Supplies the lattice-membership trio for the "plain" carriers — the concrete value types that are
neither a lattice extreme (Top / Bot / Dynamic) nor a wrapper that computes membership from
an inner type.
Every such carrier answers top / bot / dynamic with the same Trinary.no ("this value is not
that lattice point"), so the trio lived as a byte-identical copy in a dozen carriers. The extremes
override the relevant member (Top#top / Bot#bot / Dynamic#dynamic answer Trinary.yes) and
the delegators (App, Difference, Refined, Union) compute dynamic from their inner
type(s); none of those include this module.
Mirrors the existing AcceptanceRouter / ValueSemantics mixins — narrow trait sharing, never
carrier inheritance (which the type-object contract forbids).