int-index / union

Extensible type-safe unions for Haskell
BSD 3-Clause "New" or "Revised" License
32 stars 2 forks source link

Union

Build Status Hackage

Extensible type-safe unions.

ghci> let a = openUnion # (5 :: Int) :: OpenUnion '[Bool, Int]

ghci> a ^? openUnion :: Maybe Int
Just 5

ghci> a ^? openUnion :: Maybe Bool
Nothing

ghci> a ^? openUnion :: Maybe Char
<interactive>:8:6:
    No instance for (UElem Char '[] (RIndex Char '[]))
      arising from a use of ‘openUnion’
    In the second argument of ‘(^?)’, namely ‘openUnion’
    In the expression: a ^? openUnion :: Maybe Char
    In an equation for ‘it’: it = a ^? openUnion :: Maybe Char