-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Labels
code qualityRefactorings and other code-quality-related tasksRefactorings and other code-quality-related tasksenhancementgood first issue
Description
Currently, all Term implementations have their own private static Interner which provides a per-class instance cache. By interning, we ensure that for all terms t1 and t2, it holds that t1.equals(t2) iff t1 == t2, i.e. we save memory by avoiding multiple equivalent instances.
Since this is a rather essential feature in order to keep Alpha's memory footprint manageable, it should be ensured that every implementation of Term follows this pattern. It would therefore make sense to have interning handled in a central place (constructor of AbstractTerm?) rather than copy the same code in every Term implementation. (Note: Maybe we could also do something "fancy" like aspect-oriented intercepts of constructor calls, etc.)
Metadata
Metadata
Assignees
Labels
code qualityRefactorings and other code-quality-related tasksRefactorings and other code-quality-related tasksenhancementgood first issue