Hi Sergio!
> OK, but now consider adding
>
> f False = failed
>
> The meaning of the program should remain the same, but the step
> in question becomes much more plausible.
Thank you for this clarification. So the problem can be boiled
down to this one. Given the functions
f False = 1 + failed
g False = success
there is a reduction of
const (f x) (g x)
to success even if g is rigid, namely with the following steps
const (f x) (g x)
~~> {x=False} const (1 + failed) (g False) -- narrowing (f x)
~~> {x=False} const (1 + failed) success -- reducing (g False)
~~> {x=False} succeess -- reducing const ...
and this result cannot be computed with either an outer-most strategy
(assuming g is rigid) nor an inner-most strategy (because 1+failed
has no solution).
Regards
Wolfgang
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Fr Nov 09 2007 - 17:51:51 CET