I'm afraid I don't have time here to explain Haskell. Think about how graph reduction and reference equality would interact.
codygman and I both understand Haskell well, but neither of us (apparently) can work out what you mean. There's no "can of worms" around equality in Haskell as far as I can see.
I know a fair amount of Haskell. For instance I know Haskell doesn't use reference equality.
And the lack of it makes it hard to test for things like node equality when doing graph algorithms. There's an extra layer of encoding you need to be able to simulate reference equality. And even if you addressed the equality issue, I brought up two other issues that you didn't address.