[Haskell-cafe] Views of data types
Corentin Dupont
corentin.dupont at gmail.com
Thu Aug 4 10:16:51 UTC 2016
Hi guys,
I have a typeclass like that:
class Signal s where
type SignalData s :: *
The idea is that when some signal "s" fires, it returns a data of type
(SignalData s).
This is all fine except when I instantiate the class with:
data Input a = Input [(a, String)]
instance Signal (Input a)
type SignalData (Input a) = a
The concrete type of Input a is not known, so its difficult to store in
lists, to serialize...
So I need to create a "view" for the it:
class (Signal s, Signal v) => SignalView s v where
view :: s -> v
data InputView = InputView [(Int, String)]
instance Signal InputView
type SignalData InputView = Int
instance SignalView (Input a) InputView
view (Input as) = InputView (zip [0…] (snd <$> as))
Is this a common pattern?
I'm not sure I get it right...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160804/40c9f045/attachment.html>
More information about the Haskell-Cafe
mailing list