Correction on our FoSSaCS 2001 paper (1 February 2001, by Masahito Hasegawa)

In Section 7 (Conclusion and Further Work), the dinaturality for the call-by-value fixpoint operator is wrongly stated:
must be
We do need these eta-expansions for the precise correspondence with the dinaturality on the corresponding iterator. We apologize for this sloppiness (we noticed this shortly after submitting the final camera-ready...).
In fact, one can show that the first equation is operationally wrong, by writing down simple ML programs F, G which invalidate it, e.g.,
  fun F (f:int->int) = (print "Hello"; fn x:int => x);
  fun G (f:int->int) = (print "Bye"; fn x:int => x);
  (* F, G : (int -> int) -> int -> int *)
Obviously, fix (G o F) 1 and G (fix (F o G)) 1 behave differently. On the other hand, the second (corrected) equation is valid as the eta-expansions prevent undesirable side-effects. Similar seemingly-correct equations like fix F = fix (F o F) are also invalidated by this example.

In the extended version (to appear in Higher-Order Symbolic Computation), this mistake has been corrected.


Back to Hassei's Research Page / Home Page