[m-dev.] generic result types

Peter Ross pdross at gmail.com
Wed Feb 18 14:33:22 AEDT 2009


On Wed, Feb 18, 2009 at 2:12 PM, Julien Fischer
<juliensf at csse.unimelb.edu.au> wrote:
>
> On Wed, 18 Feb 2009, Peter Ross wrote:
>
>> On Wed, Feb 18, 2009 at 1:47 PM, Julien Fischer
>> <juliensf at csse.unimelb.edu.au> wrote:
>>>
>>> On Wed, 18 Feb 2009, Peter Ross wrote:
>>>
>>>> Hi,
>>>>
>>>> Do people think it would be useful to add the following generic types
>>>> to the standard library?
>>>>
>>>> :- type result(T, E)
>>>>  --->    ok(T)
>>>>  ;       error(E)
>>>>  .
>>>>
>>>> :- type partial_result(T, E) == partial_result(T, T, E).
>>>>
>>>> :- type partial_result(T, P, E)
>>>>  --->    ok(T)
>>>>  ;       error(P, E)
>>>>
>>>> :- type result(E)
>>>>  --->    ok
>>>>  ;       error(E)
>>>>  .
>>>>
>>>> Then the various io and stream types could be redefined in terms of
>>>> these
>>>> types.
>>>>
>>>> I ask because we have written a lot of code at MC which should use these
>>>> generic
>>>> result types, so I was going to add this to our library but ian
>>>> suggested we should
>>>> see first if it goes better in the mercury standard library.
>>>
>>> In which module would they be defined?
>>>
>> I was thinking result.m, just like maybe.m and cohorts.
>
> Are you proposing that there be generic result types for all the types
> duplicated in the io and stream modules?  The above doesn't cover the
> case where they have an eof functor.
>
No only the types with two functors, ok and error.

> (I seem to recall that when we added the stream module the intention
> was that the io module would eventually be changed to use the stream
> versions -- I think the reason it wasn't was to avoid breaking
> existing code, i.e. the stream module would need to be imported
> all over the place.)
>
Yes that would be an annoying change, and we would have the same
problem with this change.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the developers mailing list