[Haskell-cafe] When using Cereal, what is the right way to write `get` for multi-constructor type?

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Tue Apr 26 06:24:27 UTC 2016


On 26 April 2016 at 15:39, Magicloud Magiclouds
<magicloud.magiclouds at gmail.com> wrote:
> Hi,
> Say I have code already like:
> data STH = A
>         | B
>         | C
> instance Serialize STH where
>   put A = putWord8 1
>   put B = putWord8 66
>   put C = putWord8 111
>
> Then what is the better way to do `get`? Is following the only one?
> get = do
>   i <- getWord8
>   case i of
>     1 -> return A
>     66 -> return B
>     111 -> return C

I think that covers it, though having an explicit error message for
any other value of `i` will probably be better than the default
unmatched case one.

>
> Thanks.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list