[mercury-users] Promise on a typeclass method?

doug.auclair at logicaltypes.com doug.auclair at logicaltypes.com
Wed Jun 7 01:30:09 AEST 2006

Dear all,

Is there a way to enforce that an implementation of a
typeclassed predicate will always return a (e.g.)
particular range?

Specifically, in qcheck2 (see http://www.logicaltypes.com),
the RNG typeclass is the following:

:- typeclass random_number_generator(RNG) where [
        % gives a random float in the range [0, 1)
        pred rnd(float::out, RNG::in, RNG::out) is det,
        pred reseed(int::in, RNG::unused, RNG::out) is det

How can demand that an implementer of rnd/3 will only return
floats between 0.0 and 1.0?  In aspect-oriented programming
(see http://eclipse.org/aspectj for aspects and see 
for aspects in Prolog), one would wrap rnd/3 in a production
aspect so that every time rnd/3 is called the aspect would
ensure the value returned is within the range.  How does one
do this with Mercury constructs?

Doug Auclair

mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list