Meeting minutes M3 design 2022-10-07 #2
enikao
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
M3 (Meta-meta-model) design
Present: @ftomassetti @markusvoelter @slisson @dslmeinte @enikao
Assumptions
Separate
ConceptandConceptInterface?Pro:
Con:
Aspects:
ConceptInterfacecan only containDerivedFeaturesAlternative: Only have
Concept, allow multiple inheritance fromConceptiff at most one of the supertypes has concrete features.=> Decision: Keep
ConceptInterface, can only haveDerivedFeatures.Rationale: Being more explicit simplifies understanding, implementation, and usage.
Derived Features (aka Calculated Features)
To be added to M3
Conceptabstract: alternative nameinstantiable?=> Decision: Keep name
abstract:Rationale: Closer to most programming languages
How to resolve references?
We need a way to resolve references we don't know the target of yet.
Examples: Parsed, but not yet linked AST; Targeted part of the model not yet loaded; Dead reference
Assumption: This will not need fundamental M3 changes, but rather adjustments.
Assumption: Will also cover the case of parsed, but not yet linked parse trees.
PrimitiveTypeand subtypes=> Decision: Will swap names of
DatatypeandPrimitiveTypeRationale: Every programming language knows
PrimitiveTypes, even though they differ in what they consider primitive (e.g.Stringin Java vs. JavaScript).Datatypecan be other things than primitive (e.g. records, value types, etc.)Introduce
ValueType?Pro:
Concept(identity, atomic etc.)Con:
Concept(want to have features etc.)-> Could be special flag "IHaveNoIdentity" on Concept
Aspects:
=> Decision: Don't include for now.
Rationale: No strong reasons to include, can be added later.
Have
Enumon M3 at all?Use cases:
Pro:
Con:
Aspects:
MPS Example: Concept
Visibility, language library contains instancespublicandprivateof conceptVisibility.MPS Example: Concept
AbstractVisibility, subconceptsPublicVisibility extends AbstractVisibilityandPrivateVisibility extends AbstractVisibility.sealedonConcept=> Decision: Remove
Enumfrom M3 for now.Rationale: Can be represented otherwise; most host languages provide similar support for sealed types as they do for enums.
Ordered vs. unordered
FeaturesAspects:
Decision: Not explicitly taken => TODO
Multi-valued
Reference/Property?Pro:
ContainmentCon:
Containmentin any caseProperty=> Decision: Don't support multi-valued
Reference/Property.Rationale: Good workarounds available, implementation tricky.
Open topics to be discussed on M3
FeaturesBeta Was this translation helpful? Give feedback.
All reactions