Alpha icon indicating copy to clipboard operation
Alpha copied to clipboard

Refactoring: Handle Term interning implementation in a single place

Open madmike200590 opened this issue 3 years ago • 0 comments

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.)

madmike200590 avatar Aug 24 '22 15:08 madmike200590