@jeremy_list I would say the difference is that I am able to use the (child parent1 parent2) type [] because I can use rassoc :test 'member on an association list, whereas your haskell one is using a hash-table structure.
They're both concise and downwards.