Re: On the textual order of rules

From: Yi D <>
Date: Thu, 27 Mar 2014 20:40:38 +0100

On Wed, Mar 26, 2014 at 11:33 AM, Yi D <> wrote:

> Some time ago, we had a group discussion about the paper Functional
> Logic Programming<>.
> In the 2nd paragraph on Page 5, it goes:
> To fully support non-determinism, in a functional logic program the
> textual order of the rules defining an operation is irrelevant.
> Curiously, one of our group members tried the following code:
> data BTree = Leaf Int | Branch BTree BTree
> size :: BTree -> Int
> size (Branch l r) = 1 + size l + size r
> size (Leaf _) = 1
> in the online interpreter with the following query:
> size t =:= 3 where t free
> but got time out. However, after switching the order of the two rules,
> he got the expected answer. Suspecting the solution needs longer time
> than 5 seconds, I installed PAKCS (which is the implementation running
> behind the web interface) locally and tried the same code with the same
> query, it diverged! This clearly violates the statement quoted above.
> I searched through the documentation but could not find any explicit
> statement like the one quoted above regarding the textual order of rules.
> Afterward, I installed the KiCS2 implementation of Curry, tried the same
> code and query, and got the expected answer. Then we were confused, the
> two implementations have different behavior of the same language. What
> should we expect? Is the statement quoted above a feature or functional
> logic language or not?
> Later, I found out that PAKCS compile Curry code to Prolog while KiCS2
> targets Haskell. So it seems that the behavior of PAKCS is due to the
> inheritance of the (mis-)feature of Prolog. But the question remains:
> What is the expected behavior of the Curry language we should expect?
Many thanks to every one's answer. Now it is clearer.



curry mailing list
Received on Fr Mär 28 2014 - 08:52:50 CET

This archive was generated by hypermail 2.3.0 : Do Jun 20 2024 - 07:15:12 CEST