[Haskell-cafe] When using Cereal, what is the right way to write `get` for multi-constructor type?
Rahul Muttineni
rahulmutt at gmail.com
Wed Apr 27 03:32:17 UTC 2016
Lennart Augustsson gave a nice example of how to define enums without
having to maintain the forward as well as reverse transformations here [1].
Applying that to your problem:
> instance Enum STH where
> fromEnum = fromJust . flip lookup table
> toEnum = fromJust . flip lookup (map swap table)
> table = [(A, 1), (B, 66), (C, 111)]
And then you can use the code I gave in the previous reply to generate the
Serialize instance. I suppose this is better looking, but you may want to
check the efficiency since it requires a lookup (but it's a super tiny
table so it might not be all that bad). You can generate similar code with
Template Haskell, eliding the lookup.
[1]
http://stackoverflow.com/questions/6000511/better-way-to-define-an-enum-in-haskell
On Tue, Apr 26, 2016 at 1:40 PM, Magicloud Magiclouds <
magicloud.magiclouds at gmail.com> wrote:
> OK. So my understanding is there is no better (good-looking) code. Thank
> you all.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>
--
Rahul Muttineni
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160427/34a29494/attachment.html>
More information about the Haskell-Cafe
mailing list