Currently, TModel has a single ADT declaration. However, some TModel fields are intended to be used by both internal consumers (inside a Typepal-based typechecker) and external consumers (outside), while other fields are intended to be used only by internal consumers. For instance, in the Rascal typechecker:
- Initially, "total"
TModel values are constructed for internal use.
- Subsequently, "partial"
TModel values are constructed for external use (by filtering fields from the total TModel values).
Triggered by usethesource/rascal#2165 (issue) and usethesource/rascal#2803 (PR), a plan was formulated to incorporate the distinction between internal/external uses of TModel fields more thoroughly in Typepal itself. In this plan, the single ADT declaration of TModel is split and divided over two modules. One module contains the base and is intended to be used/imported by external consumers. The other module contains an extension of the base and is intended to be used/imported by internal consumers.
Currently,
TModelhas a single ADT declaration. However, someTModelfields are intended to be used by both internal consumers (inside a Typepal-based typechecker) and external consumers (outside), while other fields are intended to be used only by internal consumers. For instance, in the Rascal typechecker:TModelvalues are constructed for internal use.TModelvalues are constructed for external use (by filtering fields from the totalTModelvalues).Triggered by usethesource/rascal#2165 (issue) and usethesource/rascal#2803 (PR), a plan was formulated to incorporate the distinction between internal/external uses of
TModelfields more thoroughly in Typepal itself. In this plan, the single ADT declaration ofTModelis split and divided over two modules. One module contains the base and is intended to be used/imported by external consumers. The other module contains an extension of the base and is intended to be used/imported by internal consumers.