> > signature ITERATE1 =
> > sig
> > type 'a t
> > val iterate: 'a t -> 'a -> unit
> > end
>
> It doesn't look like I can do much of anything with that.
Duh! :-) That should be
signature ITERATE1 =
sig
type 'a t
val iterate: 'a t -> unit -> 'a
end