ungadtagger
Version 1.0.0 revision 0 uploaded by AndriyPolishchuk.
Package meta
- Synopsis
- Abstract GADTs from typelevel tags
- Description
UnGADTagger encapsulates abstraction-from-GADT-tag workflow by utilizing existentials, rank2-types and kind polymorphism.
An example:
# LANGUAGE GADTs, DataKinds, KindSignatures, LambdaCase # import Data.GADT.Untagged data Tag = A | B data Gadt :: Tag -> * where ConA :: String -> Gadt A ConB :: [Gadt A] -> Gadt B ConC :: Integer -> Gadt B foo :: something -> [Untagged Gadt] -> String foo _ = quux where quux = concat . map baz baz x = match x $ \case ConA s -> s ConB xs -> quux (map untag xs) ConC i -> show i test = foo "some cfg for e.g." (xs ++ ys) where xs = map untag [ConA "A1..", ConA "A2.."] ys = map untag [ConB [ConA "A3.."], ConC 456] -- > "A1..A2..A3..456"
- Author
- Andriy Polishchuk
- Bug reports
- http://github.com/andriyp/ungadtagger/issues
- Category
- Data
- Copyright
- (c) 2012 Andriy Polishchuk
- Homepage
- http://github.com/andriyp/ungadtagger
- Maintainer
- Andriy Polishchuk <andriy.s.polishchuk@gmail.com>
- Package URL
- n/a
- Stability
- n/a