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
Concept
andConceptInterface
?Pro:
Con:
Aspects:
ConceptInterface
can only containDerivedFeature
sAlternative: Only have
Concept
, allow multiple inheritance fromConcept
iff at most one of the supertypes has concrete features.=> Decision: Keep
ConceptInterface
, can only haveDerivedFeature
s.Rationale: Being more explicit simplifies understanding, implementation, and usage.
Derived Features (aka Calculated Features)
To be added to M3
Concept
abstract
: 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.
PrimitiveType
and subtypes=> Decision: Will swap names of
Datatype
andPrimitiveType
Rationale: Every programming language knows
PrimitiveType
s, even though they differ in what they consider primitive (e.g.String
in Java vs. JavaScript).Datatype
can 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
Enum
on M3 at all?Use cases:
Pro:
Con:
Aspects:
MPS Example: Concept
Visibility
, language library contains instancespublic
andprivate
of conceptVisibility
.MPS Example: Concept
AbstractVisibility
, subconceptsPublicVisibility extends AbstractVisibility
andPrivateVisibility extends AbstractVisibility
.sealed
onConcept
=> Decision: Remove
Enum
from 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
Feature
sAspects:
Decision: Not explicitly taken => TODO
Multi-valued
Reference
/Property
?Pro:
Containment
Con:
Containment
in any caseProperty
=> Decision: Don't support multi-valued
Reference
/Property
.Rationale: Good workarounds available, implementation tricky.
Open topics to be discussed on M3
Feature
sBeta Was this translation helpful? Give feedback.
All reactions