[mercury-users] More on higher order functions
Ralph Becket
rbeck at microsoft.com
Fri Feb 4 03:00:40 AEDT 2000
I'm experimenting with programming in the monadic
style in Mercury and I've discovered a mildly painful
hole in the default func mode assumption.
If I have
:- type stateT(S, A) ---> stateT(func(S) = pair(A, S)).
:- func stateT(S, A) `thenST` (func(A) = stateT(S, B)) = stateT(S, B).
and write
stateT(ST) `thenST` F =
stateT((
func(S0) = FX(S) :-
(X-S) = ST(S0),
stateT(FX) = F(X)
)).
then I get all sorts of whinges from the compiler about
modes, the problem being that the default func mode
assumption doesn't extend to `wrapped up' functions.
My question is, would it be possible to extend the mode
assumption to ``wherever I know there's a function, and
no mode declarations have been made to the contrary, I
will assume that function has mode
`(in, ...) = out is det' ''?
Ralph
--------------------------------------------------------------------------
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