- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Andy Jost <Andrew.Jost_at_synopsys.com>

Date: Thu, 14 May 2015 17:48:56 +0000

Hi,

I'm trying to understand some internal functions that appear in the PAKCS p=

relude. I need to do this because I'm writing a compiler that accepts Flat=

Curry as input, and so these functions appear. I'm sorry if this is docume=

nted somewhere, but I couldn't find it.

First:

--- Non-strict equational constraint. Used to implement functional patterns=

.

(=:<=) :: a -> a -> Success

And, for reference:

--- The equational constraint.

--- (e1 =:= e2) is satisfiable if both sides e1 and e2 can be

--- reduced to a unifiable data term (i.e., a term without defined

--- function symbols).

(=:=) :: a -> a -> Success

Presumably, =:= is strict. I can't find any difference in behavior bet=

ween these, however. In what sense is =:<= non-strict? I thought perh=

aps this expression would succeed:

cond ([1 `div` 0] =:<= x) (length x) where x free

But it gives a zero_divisor error. Can anyone provide an example that illu=

strates the difference between these?

Next:

--- Non-strict equational constraint for linear functional patterns.

--- Thus, it must be ensured that the first argument is always (after evalu=

tation

--- by narrowing) a linear pattern. Experimental.

(=:<<=) :: a -> a -> Success

I have not seen this appear in any FlatCurry file. Since it is marked as e=

xperimental, I wonder will it ever be generated without a special setting?

Finally:

--- internal function to implement =:<=

ifVar :: _ -> a -> a -> a

I'd be interested to know how this is used to implement =:<=.

Thanks in advance for any help!

-Andy

_______________________________________________

curry mailing list

curry_at_lists.RWTH-Aachen.DE

http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry

Received on Sat May 16 2015 - 17:40:23 CEST

Date: Thu, 14 May 2015 17:48:56 +0000

Hi,

I'm trying to understand some internal functions that appear in the PAKCS p=

relude. I need to do this because I'm writing a compiler that accepts Flat=

Curry as input, and so these functions appear. I'm sorry if this is docume=

nted somewhere, but I couldn't find it.

First:

--- Non-strict equational constraint. Used to implement functional patterns=

.

(=:<=) :: a -> a -> Success

And, for reference:

--- The equational constraint.

--- (e1 =:= e2) is satisfiable if both sides e1 and e2 can be

--- reduced to a unifiable data term (i.e., a term without defined

--- function symbols).

(=:=) :: a -> a -> Success

Presumably, =:= is strict. I can't find any difference in behavior bet=

ween these, however. In what sense is =:<= non-strict? I thought perh=

aps this expression would succeed:

cond ([1 `div` 0] =:<= x) (length x) where x free

But it gives a zero_divisor error. Can anyone provide an example that illu=

strates the difference between these?

Next:

--- Non-strict equational constraint for linear functional patterns.

--- Thus, it must be ensured that the first argument is always (after evalu=

tation

--- by narrowing) a linear pattern. Experimental.

(=:<<=) :: a -> a -> Success

I have not seen this appear in any FlatCurry file. Since it is marked as e=

xperimental, I wonder will it ever be generated without a special setting?

Finally:

--- internal function to implement =:<=

ifVar :: _ -> a -> a -> a

I'd be interested to know how this is used to implement =:<=.

Thanks in advance for any help!

-Andy

_______________________________________________

curry mailing list

curry_at_lists.RWTH-Aachen.DE

http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry

Received on Sat May 16 2015 - 17:40:23 CEST

*
This archive was generated by hypermail 2.3.0
: Fri Sep 20 2019 - 07:15:09 CEST
*