This implementation leaves much to be desired, but it seems to work a whole helluva lot better than the last STM even if it isn't using as much type-level nonsense. There is some unfortunate trickery needed to get the witnesses for the transaction log entries to line up correctly, but given that the entries really only exist to act as keys in a hash table it shouldn't be a problem. Tests are GHC's as usual.
This implementation leaves much to be desired, but it seems to work a whole helluva lot better than the last STM even if it isn't using as much type-level nonsense. There is some unfortunate trickery needed to get the witnesses for the transaction log entries to line up correctly, but given that the entries really only exist to act as keys in a hash table it shouldn't be a problem. Tests are GHC's as usual.