[mercury-users] Higher order stuff... [embarrasment]

Ralph Becket rbeck at microsoft.com
Tue Mar 21 04:34:13 AEDT 2000


Ooops - just found out that it was a convoluted bug in my code and
the type inference seems to be doing just the right thing.
Apologies...

--
Ralph Becket      |      MSR Cambridge      |      rbeck at microsoft.com 

> -----Original Message-----
> From: Ralph Becket [mailto:rbeck at microsoft.com]
> Sent: 20 March 2000 17:06
> To: Mercury Users Mailing List (E-mail)
> Subject: [mercury-users] Higher order stuff, type inference and
> ambiguity
> 
> 
> I've been hacking away and the following line
> 
> ArgSpace = array(list__map(map__lookup(TypeObjsMap), TypeSigList))
> 
> led to this collection of errors:
> 
> naffplan.m:637: In clause for function `naffplan:qualify_op_spec/2':
> naffplan.m:637:   in argument 1 of functor `array/1':
> naffplan.m:637:   in argument 1 of functor `list:map/2':
> naffplan.m:637:   in unification of argument
> naffplan.m:637:   and term `map:lookup(TypeObjsMap)':
> naffplan.m:637:   type error in argument(s) of functor `map:lookup/1'.
> naffplan.m:637:   argument has type `((func PropName) = T)',
> naffplan.m:637:   functor `map:lookup/1' has overloaded type
> naffplan.m:637:   { (map:lookup((tree234:tree234(K, V)))) :: 
> pred(K, V),
> naffplan.m:637:   (map:lookup((tree234:tree234(K, V)))) :: 
> ((func K) = V) },
> naffplan.m:637:   variable `TypeObjsMap' has type 
> `(tree234:tree234(Type,
> (list:list(Obj))))'.
> 
> I've been bitten by this one a couple of times before.  The problem is
> that map__lookup/3 is a predicate and map__lookup/2 is a 
> function.  Now,
> there is sufficient information later on in the clause containing the 
> offending line to show that the only consistent typing results from
> taking map__lookup(TypeObjsMap) as a function.
> 
> It seems to me (as a non-expert on type inference) that 
> provided there is
> only one sensible assignment of types to values then the 
> compiler should
> settle on that one as being what you intended.
> 
> Is my problem above a special case of a much harder problem or is this
> an undesirable behaviour to want or is it just a hole in type 
> inference
> in the compiler?
> 
> Cheers,
> 
> Ralph
> 
> --
> Ralph Becket      |      MSR Cambridge      |      
> rbeck at microsoft.com 
> --------------------------------------------------------------
> ------------
> 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
> --------------------------------------------------------------
> ------------
> 
--------------------------------------------------------------------------
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