Buenas no estoy entendiendo porque el tipo más general de dup dup (opción d) es el indicado.
Yo creía que debería de ser algo de esta forma (a->(a,a))->(a->(a,a),(a->(a,a)) ya que la entrada a la función dup es dup y el tipo de dup es lo que puse al principio, sin embargo en la solución solo colocan el tipo "de lo que saldría" de la función.