Releases: alt-romes/hegg
hegg v0.5
- 
Change 'modifyA'to instead operate over e-graphs, instead of being
 constrained to editing the e-class that prompted the modification.
 (Remember that the e-graph lenses in'Data.Equality.Graph.Lens'are the
 preferred way to edit the e-graph and the desired e-class (by id), and its
 data, etc...)
- 
Fix compilation of Data.Equality.Graph.Dot, the graphviz rendering backend 
 (despite there being some usability bugs still) (by @BinderDavid)
- 
Dropped support for GHC 9.0 because of the QuantifiedConstraints bug (by @phadej) 
- 
Add AnalysisM, a class for e-graph analysis that are only well-defined
 within a certain monadic context. Accordingly, we also add versions of the
 current e-graph transformation functions (such asaddandmerge) for
 analysis defined monadically (such asaddMandmergeM).
- 
Add operation to create empty e-classes with explicit domain data 
 (experimental, not sure whether this is something good to keep in the API)
hegg v0.4
- Make Languagea constraint type synonym instead of a standalone empty class
- Use QuantifiedConstraintsinstead ofEq1,Ord1,Show1in the implementation,
 which results in the user only having to provide anEq a => Eq (language a)instance rather than aEq1 languageone (which is much simpler and can
 usually be done automatically!)
- Make _classesaTraversallens over all e-classes rather than aLensintoIntMap EClass
hegg v0.3
- 
A better Analysistutorial in the README.
- 
Complete Analysisredesign.- The Analysisclass now has two type parameters: adomainand a
 language, and no longer has an associated type family
- The analysis no longer has any knowledge of the e-graph:
- makeAnow has type- l domain -> domain, that is, to make a domain
 of a new node we only have to take into consideration the data of
 the sub-nodes of the new node.
- joinAis unchanged.
- modifyAnow has type- EClass domain lang -> (EClass domain lang, [Fix lang]). It takes an e-class and optionally modifies it,
 possibly by adding nodes to it. The return value is the modified
 e-class, and a list of expressions from the language to add to the
 e-class.
 
- We can now compose analysis and create language-polymorphic analysis. Such
 two examples are the analysis with domain()which regardless of the
 language simply ignores the domain:instance Analysis () l; and the
 second example is the product of analysis, which composes two separate
 analysis into one:instance (Analysis a l, Analysis b l) => Analysis (a,b) l.
- An EGraphnow also has two type parameters instead of one (the latter is
 the language is the former the domain of the analysis).
 
- The 
- 
Allow customization of Schedulers through parameters (by accepting a scheduler 
 rather than a proxy for it)
hegg v0.2
What's Changed
- Expose runEqualitySaturationto run equality saturation on existing e-graphs
 whole instead of focusing on individual expressions
- (Very) significant performance improvements!
- Make CostFunctionpolymorphic over theCosttype, requiring that type
 to instanceOrd
- Make e-graph abstract. The internal structure can still be modified through
 the available lenses inData.Equality.Graph.Lens
- Fix a bug related to NodeMap's size.
Full Changelog: v0.1.0.0...v0.2.0.0