zslajchrt / morpheus Goto Github PK
View Code? Open in Web Editor NEWA Scala extension introducing metamorphism of objects
License: Apache License 2.0
A Scala extension introducing metamorphism of objects
License: Apache License 2.0
The current version of the alternatives iterator produces duplicate alternatives as long as the same fragment occurs in multiple disjunctive groups:
(A | B)*(A | B) produces 4 alternatives A, AB, B, AB, but it should produce A, AB, B.
A fragment can be marked as private in the morph model. In such a case it will be excluded when constructing the morph's LUB (lowest upper bound). Only the other fragments in the morph can invoke its members.
This issue is of low importance since it can be achieved by means of kernel references that can hide private fragments.
Two fragments may have contain unrelated members of the same name (i.e. not overriding). Since this ambiguity may lead to an unintended behavior, the compiler should reveal this issue and report it as an error.
Since AltMappings are generated as a string source in compile time, which must be parsed in runtime, it will be necessary to incorporate some caching into the AltMappings.apply(src: String), which is responsible for parsing the serialised form of generated AltMappings.
A fragment instance in a kernel can be specified as the identity fragment.
Two kernels have the same identity iff they are the same instances (i.e. in terms of eq
) or contain the same identity fragment (i.e. in terms of ==
).
Two morphs have the same identity iff their kernels have the same identity. In other words, a morph has no its identity.
Introduce new operator =*=, which compares the identities of two morphs or kernels.
Scopes will replace the singleton and frag factories.
It will automatically make possible to share hidden fragments between two morphs, the source and target ones.
Private members should not be enhanced, mainly because of performance reasons.
Sometimes types have no annotations loads during macro morph model parsing in compile time, although they have some.
There is a workaround: it helps if the morph model is parsed twice.
Dimension traits should support non-public members as well. Currently the generator ignores them and the generated dimension stub (Dim$dimension.class) do not contain any of them.
The parents of the generated fragment class (Frag$fragment.class) are not fully qualified. It results in compilation errors complaining about non-existence of types from the list of parents as long as these types belong to other package that that of the generated fragment class or no appropriate import statement is present.
A workaround: Import the whole package to which the parent fragments or dimensions belong to the source from which the fragment class is generated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.