"This part of the conditional can be written more succinctly as:
all (== test_lcv) [init_lcv, update_lcv, update_lcv']"
Wouldn't this be be better as tuple avoiding list overhead or does ghc optimize it out?
If it could be done as a tuple.
all (== test_lcv) (init_lcv, update_lcv, update_lcv')