[mercury-users] Constructor question.

Ian MacLarty maclarty at csse.unimelb.edu.au
Sat Apr 14 21:59:11 AEST 2012


On Sat, Apr 14, 2012 at 9:42 PM, Michael Richter <ttmrichter at gmail.com> wrote:
> On 14 April 2012 19:32, Michael Richter <ttmrichter at gmail.com> wrote:
>>
>> On 14 April 2012 19:21, Ian MacLarty <maclarty at csse.unimelb.edu.au> wrote:
>>>
>>> > You can also do something like this:
>>>
>>>
>>> Foo ^ bar = 10,
>>> Foo ^ baz = "eleven",
>>> Foo ^ quux = yes,
>>
>>
>> OK, I … am duly chastened.  I hadn't even thought of doing it that way.  I
>> was constantly messing with :=.
>
>
> OK, I'm still lost, I'm afraid.  Given this type declaration:
>
> :- type foo(bar::int, baz::string, quux::bool).
>
> How would I instantiate this using the system you show?
>
> :- func default_instance = (foo::out) is det.
> default_instance = <what code do I put here?>
>
> I've tried a few ways to do this, with = or :=, explicitly naming the return
> variable and separating it from the instantiation code with :- (and a few
> other more desperate attempts) and I'm just not having any luck.
>

This works for me:

:- type foo --->  foo(bar :: int, baz :: string).
:- func default_instance = (foo::out) is det.
default_instance = Foo :-
    Foo ^ bar = 10,
    Foo ^ baz = "eleven".

Ian.

--------------------------------------------------------------------------
mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the users mailing list