Unpacking sum types
Simon Peyton Jones
simonpj at microsoft.com
Tue Sep 8 11:48:21 UTC 2015
| I see, but then you can't have multiple fields, like
|
| ( (# Int,Bool #) |)
|
| You'd have to box the inner tuple too. Ok, I suppose.
Well of course! It's just a parameterised data type, like a tuple. But, just like unboxed tuples, you could have an unboxed tuple (or sum) inside an unboxed tuple.
(# (# Int,Bool #) | Int #)
Simon
| -----Original Message-----
| From: Simon Marlow [mailto:marlowsd at gmail.com]
| Sent: 08 September 2015 09:55
| To: Simon Peyton Jones; Johan Tibell; Ryan Newton
| Cc: ghc-devs at haskell.org
| Subject: Re: Unpacking sum types
|
| On 08/09/2015 09:31, Simon Peyton Jones wrote:
| > | How did you envisage implementing anonymous boxed sums? What is
| > | their heap representation?
| >
| > *Exactly* like tuples; that is, we have a family of data type
| declarations:
| >
| > data (a|b) = (_|) a
| > | (|_) b
| >
| > data (a|b|c) = (_||) a
| > | (|_|) b
| > | (||_) c
| > ..etc.
|
| I see, but then you can't have multiple fields, like
|
| ( (# Int,Bool #) |)
|
| You'd have to box the inner tuple too. Ok, I suppose.
|
| Cheers
| Simon
|
|
| > Simon
| >
| > |
| > | One option is to use some kind of generic object with a dynamic
| > | number of pointers and non-pointers, and one field for the tag.
| > | The layout would need to be stored in the object. This isn't a
| > | particularly efficient representation, though. Perhaps there
| could
| > | be a family of smaller specialised versions for common sizes.
| > |
| > | Do we have a use case for the boxed version, or is it just for
| > | consistency?
| > |
| > | Cheers
| > | Simon
| > |
| > |
| > | > Looks good to me!
| > | >
| > | > Simon
| > | >
| > | > *From:*Johan Tibell [mailto:johan.tibell at gmail.com] > *Sent:*
| 01
| > | September 2015 18:24 > *To:* Simon Peyton Jones; Simon Marlow;
| Ryan
| > | Newton > *Cc:* ghc-devs at haskell.org > *Subject:* RFC: Unpacking
| > | sum types > > I have a draft design for unpacking sum types that
| > | I'd like some > feedback on. In particular feedback both on:
| > | >
| > | > * the writing and clarity of the proposal and
| > | >
| > | > * the proposal itself.
| > | >
| > | > https://ghc.haskell.org/trac/ghc/wiki/UnpackedSumTypes
| > | >
| > | > -- Johan
| > | >
| >
More information about the ghc-devs
mailing list