hirt-0.0.1.0: Listable.hs
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
module Listable
where
class Listable c a where
toList :: c -> [a]
fromList :: [a] -> c
instance Listable a a where
toList a = [a]
fromList (a:_) = a
instance Listable (a,a) a where
toList (a,b) = [a,b]
fromList (a:b:_) = (a,b)
instance Listable (a,a,a) a where
toList (a,b,c) = [a,b,c]
fromList (a:b:c:_) = (a,b,c)