Solver: Use difference lists to combine logs in 'Explore.exploreLog'.
This commit adds a data structure, 'RetryLog', which is like a difference list for the 'Progress' type, except that it only supports efficient appends at failures. Since the solver continually appends logs and calls 'tryWith' while exploring the search tree, it is important for those operations to be efficient. Afterwards, the solver converts the 'RetryLog' back to a 'Progress' so that it can be processed with pattern matching in Log.hs and Message.hs.
Showing with 148 additions and 31 deletions