[Haskell-cafe] Client-extensible heterogeneous types
Jacek.Generowicz at cern.ch
Tue Oct 12 09:08:30 EDT 2010
[Sorry Stephen, didn't mean to take this off-list, hence the resend.]
On 2010 Oct 12, at 14:31, Stephen Tetley wrote:
> To do this I would use dynamic types (via Data.Dynamic).
Ah, yes, I've just stumbled upon these while trying to figure out what
APPLY or FUNCALL would mean in Haskell.
> There are more typeful ways to deal with heterogeneous structures[*],
> but if "clients can easily extend it with their own new types" you've
> pretty much defined what dynamic types solve.
I've just started experimenting with implementing the dynamism by
holding functions (methods) alongside data in a variant type. I think
I'll see what I learn by taking this a bit further, before digging
into Data.Dynamic, but it's good to know there is some prior art to
turn to in the long run.
Reading the GHC docs on Data.Dynamic, I infer that Data.Dynamic is non-
standard, but, in principle, portable to other implementations.
Is that understanding correct?
> [*] See the HList papers and library and various solutions to the
> "expression problem".
This seems to be extremely relevant too, though I think that I'll
stick to my own experiment and Data.Dynamic to start with.
Thanks very much.
More information about the Haskell-Cafe