On Tue, Jun 14, 2011 at 8:41 AM, Antonio Regidor García
<a_regidor_at_yahoo.es> wrote:
> Sorry, only the FIRST version works ok.
Interesting. I can confirm that in MCC
>> > partition l | concat p =:= l & all (not . null) p =:= True = p
>> > where p free
terminates gracefully after computing the last solution, but
>> > partition l | all (not . null) p =:= True & concat p =:= l = p
>> > where p free
only terminates with a stack overflow.
It seems that MCC evaluates concurrent constraints differently than
PAKCS which only tries the second argument if the first suspends.
Trying out
cyi> concat unknown =:= [1,2,3]
however, does not suspend but searches indefinitely and dies with a
stack overflow. Apparently, MCC tries the second argument of (&) even
if the first does not suspend.
> Is this a bug in MCC?
The Curry report does not predate a specific interleaving of
concurrent constraints but only proposes PAKCS's behaviour as one
possible sequential implementation. I also did not find any
termination guarantees so it's hard to call any behaviour a bug, I
think.
Wolfgang, can you clarify MCC's strategy of solving concurrent constraints?
Best regards,
Sebastian
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Di Jun 14 2011 - 09:13:15 CEST