Hello Sergio,
Sergio Antoy schrieb:
> It looks like we have different
> notions of what can or needs to be evaluated to obtains all the
> results of a computation. This can be partly due to the semantics
> or models we have in mind. E.g., Wolfgang thinks functions
> whereas I think rewrite rules. With a different model, maybe some
> steps that I would like to perform are not justified.
Could it be that the semantic model you have in mind is that of
_confluent_ rewriting? That you want to embed the non-confluence of
non-deterministic functions into a confluent system with special
treatment of the non-deterministic choice?
This would enlighten your comment:
> When a variable is shared, a narrowing step must instantiate the
> variable with a generator, not only with the cases of the function
> that is narrowing the variable.
and also your reply, to Michael's example:
> Michael's example is another case in point.
>
>> f True _ = True
>> g False = False
>>
>> and the expression (f x (g x)). If you reduce the narrex (g x),
>> you cannot obtain the normal form True.
>
> Since x is shared it should be narrowed to (True ? False).
Making such non-standard narrowing steps is implemented in kics, since
mapping to functional programs means that you have to map to a confluent
system. And, unfortunately, we couldn't add the additional constraint
"since x is shared" which would make many computations in kics much more
efficient.
Thanks for bringing up the topic!
Bernd
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Mo Nov 05 2007 - 12:16:15 CET