Some more implementation from https://github.com/ekmett/free/blob/master/src/Control/Applicative/Free.hs