[Haskell-beginners] Tagged types
PICCA Frederic-Emmanuel
frederic-emmanuel.picca at synchrotron-soleil.fr
Fri Oct 12 12:35:54 UTC 2018
I endup with this solution, whcih is for me quite elegant. Maybe this could be generalize with the singleton package.
mkSomeDataCollection :: DataCollection a b -> SomeDataCollection
mkSomeDataCollection c = withSCollectType $ \s ->
withSCollectSourceFormat $ \f ->
SomeDataCollection s f (coerce c)
where
withSCollectType :: (forall c. SCollectType c -> SomeDataCollection) -> SomeDataCollection
withSCollectType cont = if "ref-" `isPrefixOf` imagePrefix c
then cont SCaracterization
else cont SCollect
withSCollectSourceFormat :: (forall c .SCollectSourceFormat c -> SomeDataCollection) -> SomeDataCollection
withSCollectSourceFormat cont = case imageSuffix c of
(Just "cbf") -> cont SCbf
(Just "h5") -> cont SHdf5
(Just _) -> cont SCbf
Nothing -> cont SCbf
I can not use singleton since I decided to stick to Debian stable/unstable
Cheers and thanks a lot for the help.
Frederic
More information about the Beginners
mailing list