OK. So my understanding is there is no better (good-looking) code. Thank you all.

William Yager <will.yager@gmail.com>于2016年4月26日周二 下午4:03写道:
You may also want to use the Lambda-case extension. It will allow you to elide the declaration of i.

--Will Yager

On Tue, Apr 26, 2016 at 1:24 AM, Ivan Lazar Miljenovic <ivan.miljenovic@gmail.com> wrote:
On 26 April 2016 at 15:39, Magicloud Magiclouds
<magicloud.magiclouds@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@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>



--
Ivan Lazar Miljenovic
Ivan.Miljenovic@gmail.com
http://IvanMiljenovic.wordpress.com
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe