[mercury-users] Inconsistency of fields and functions
    Michael Day 
    mikeday at yeslogic.com
       
    Mon Jul 24 11:28:22 AEST 2006
    
    
  
If you have a non-abstract type with fields like this:
    :- type foo
        --->    foo(value :: fruit).
The compiler will happily accept this switch as being deterministic:
    (
        Foo ^ value = orange
    ;
        Foo ^ value = apple
    )
However if the type is made abstract, and the field access is exported by
adding this function declaration:
    :- func foo ^ value = fruit.
then the compiler will no longer recognise the switch as being
deterministic, even though it clearly still is, as the function is not
impure. It's a minor but irritating inconsistency :)
Michael
-- 
Print XML with Prince!
http://www.princexml.com
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at csse.unimelb.edu.au
administrative address: owner-mercury-users at csse.unimelb.edu.au
unsubscribe: Address: mercury-users-request at csse.unimelb.edu.au Message: unsubscribe
subscribe:   Address: mercury-users-request at csse.unimelb.edu.au Message: subscribe
--------------------------------------------------------------------------
    
    
More information about the users
mailing list