Inspiration

My project is called E-Graph-Optimizer, and it is an optimizer for a specific type of graph data structure called an "E-Graph". The goal of this optimizer is to reduce the size of the E-Graph, making it faster and more efficient to process.

What it does

I was inspired to work on this project by my mutual interest in graph optimization and data structures. I were particularly interested in the unique challenges of optimizing E-Graphs, which are commonly used in computer science research and development.

How we built it

I built E-Graph-Optimizer using Haskell, a functional programming language known for its strong type system and powerful abstractions. I also used various Haskell libraries for parsing and manipulating graphs, as well as testing and benchmarking the optimizer.

Challenges we ran into

One of the biggest challenges I faced was working with the complex data structures used in E-Graphs, which can be difficult to manipulate efficiently. I also had to carefully design and test each optimization to ensure it preserved the original semantics of the E-Graph.

Accomplishments that we're proud of

I am proud of the overall design and implementation of the E-Graph-Optimizer, as well as the performance gains we were able to achieve through our optimizations. I am also proud of the thorough testing and benchmarking I did to validate the correctness and efficiency of my optimizer.

What we learned

Through building E-Graph-Optimizer, we learned a lot about graph optimization techniques and how they can be applied to real-world problems. I also gained a deeper understanding of Haskell's powerful abstractions and type system, as well as its strengths and limitations as a language.

What's next for E-Graph-Optimizer

In the future, I hope to continue improving and refining E-Graph-Optimizer, as well as exploring new optimization techniques and data structures. I also plan to release the optimizer as a standalone library, so that others can benefit from our work.

Built With

  • cabal
  • egg
  • haskell
  • nix
Share this project:

Updates