Skip to content

Refactoring: Handle Term interning implementation in a single place #343

@madmike200590

Description

@madmike200590

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

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions