[m-dev.] purity of `:- pragma foreign_proc'

Peter Schachte schachte at cs.mu.OZ.AU
Fri Nov 2 12:33:22 AEDT 2001


On Thu, Nov 01, 2001 at 05:23:52PM +1100, Tyson Dowd wrote:
> Let me collect the syntax proposals together:
> 
> (1) :- pragma pure foreign_proc(...).		% or semipure or impure
> (2) :- pragma promise_pure foreign_proc(...).   % or promise_semipure
> 
> and I'd like to throw in
> 
> (3) :- pragma foreign_proc(..., [promise_pure]). % or promise_semipure
> 
> Note that with (2) and (3) there doesn't seem to be any need to allow
> promise_impure but I guess we could allow it anyway and it would do
> absolutely nothing. 
> 
> With (1) "impure" would be completely optional and would also make no
> difference.

A variation on (1) would be to *require* one of pure, semipure or impure.
No default:  you have to think about it and tell mercury what it is.  That's
actually what I had intended.

Naturally, I like (1) best, and (2) a close second.  (If you go with (2)
promise_pure and promise_semipure will have to be made operators.  But then
the syntax for promising purity can be

	:- promise_pure foo/3.

which is prettier than the current syntax.)  A compromise between (1) and
(2), which I'll call (1.5), would be to use

	:- pragma promise pure foreign_proc(...).

and change the promise_pure declarations to

	:- pragma promise pure foo/3.

or even

	:- promise pure foo/3.

I don't care for (3) very much.

-- 
Peter Schachte              The Street finds its own uses for technology.
schachte at cs.mu.OZ.AU            -- William Gibson 
www.cs.mu.oz.au/~schachte/  
Phone: +61 3 8344 9166      
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list