I’m not sure what to conclude from this. It’s about non-functional behaviour, 
so not quite something people ought to rely upon.

I’m guessing one could make the change and nothing would happen. I’m still not 
convinced that the case for a change has been made however.

For what it’s worth, there are no such operators in HOL Light.

Larry

> On 22 Jan 2017, at 08:18, Florian Haftmann 
> <florian.haftm...@informatik.tu-muenchen.de> wrote:
> 
> Surprisingly (?), there is no error here. The reason is obvious when
> inspecting src/Pure/library.ML:
> 
> ML ‹
> fun (f oo g) x y = f (g x y);
> fun (f ooo g) x y z = f (g x y z);
> fun (f oooo g) x y z w = f (g x y z w);
> ›
> 
> The composition operators always wait for all arguments to be applied!
> Alternative definitions would be
> 
> ML ‹
> fun (f oo g) x = f o g x;
> fun (f ooo g) x  = f oo g x;
> fun (f oooo g) x = f ooo g x;
> ›
>       
> ML_val ‹
> fun foo k = error (string_of_int (k + 1));
>       
> val bar = I oo foo;
>       
> val _ = bar 41;
> ›
> 
> Yielding the expected error.
> 
> I am not sure whether this is a striking argument to change such
> long-standing definitions dating back to c755dfd02509 in 1998. But it is
> at least worth noting that these are not apt for partial application.
> 

_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to