Buenas,
Me queda la duda si esta bien escrito las reducciones en un paso al procesar foldr. Se acumulan en e no? O sea:
==> head (foldr insert [] [3, 1, 2])
==> head (foldr insert [2] [3, 1])
==> head (foldr insert 1:2:[] [3])
esta bien?
Y después, en un paso más de reducción ya no queda la expresión de foldr no? O sea se llega a f x1 (f x2 ( f x3 e)) y se aplicaría head?