[Haskell-cafe] Template Haskell sees into abstract data types
Ivan Lazar Miljenovic
ivan.miljenovic at gmail.com
Sat Jul 3 19:20:25 EDT 2010
Serguey Zefirov <sergueyz at gmail.com> writes:
>>> I cannot directly create my own class instances for them because of
>>> that. But I found that I can write Template Haskell code that could do
>>> that - those data types could be reified just fine.
>> Huh? Sure you can write class instances for them.
>> ,----
>> | instance SizeOf (Map k v) where
>> | sizeOf = Map.size
>> `----
>
> Those are trivial. They are not interesting.
You said you couldn't write any, and of course I wrote a trivial one
because I didn't want to write a whole library in an email.
> I cannot write classes that see into internal structure. For example,
> I cannot write my own (de)serialization without using from/toAscList.
So? What's wrong with using {from,to}AscList ?
You could also try using GHC's stand-alone deriving mechanism to derive
binary or something:
http://www.haskell.org/haskellwiki/GHC/Stand-alone_deriving_declarations
>>> This is somewhat strange situation. Was it a design decision?
>> The reason that they are exported abstractly is so that you don't see
>> the internals of the data structure, because 1) you don't need to, and
>> 2) to stop you from doing anything stupid with them.
>
> I was talking about successful reification of abstract data types.
>
> That way I can do anything stupid with them.
Why do you want to?
--
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com
More information about the Haskell-Cafe
mailing list