Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.PureScript.Bridge.SumType
Synopsis
- data SumType (lang :: Language) = SumType (TypeInfo lang) [DataConstructor lang] [Instance]
- mkSumType :: (Generic t, Typeable t, GDataConstructor (Rep t)) => Proxy t -> SumType 'Haskell
- equal :: forall a (t :: Language). Eq a => Proxy a -> SumType t -> SumType t
- order :: forall a (t :: Language). Ord a => Proxy a -> SumType t -> SumType t
- data DataConstructor (lang :: Language) = DataConstructor {
- _sigConstructor :: !Text
- _sigValues :: !(Either [TypeInfo lang] [RecordEntry lang])
- data RecordEntry (lang :: Language) = RecordEntry {}
- data Instance
- = Encode
- | EncodeJson
- | Decode
- | DecodeJson
- | Generic
- | Newtype
- | Eq
- | Ord
- nootype :: forall (lang :: Language). [DataConstructor lang] -> Maybe Instance
- getUsedTypes :: forall (lang :: Language). SumType lang -> Set (TypeInfo lang)
- constructorToTypes :: forall (lang :: Language). DataConstructor lang -> Set (TypeInfo lang) -> Set (TypeInfo lang)
- sigConstructor :: forall (lang :: Language) f. Functor f => (Text -> f Text) -> DataConstructor lang -> f (DataConstructor lang)
- sigValues :: forall (lang1 :: Language) (lang2 :: Language) f. Functor f => (Either [TypeInfo lang1] [RecordEntry lang1] -> f (Either [TypeInfo lang2] [RecordEntry lang2])) -> DataConstructor lang1 -> f (DataConstructor lang2)
- sumTypeInfo :: forall f (lang :: Language). Functor f => (TypeInfo lang -> f (TypeInfo lang)) -> SumType lang -> f (SumType lang)
- sumTypeConstructors :: forall f (lang :: Language). Functor f => ([DataConstructor lang] -> f [DataConstructor lang]) -> SumType lang -> f (SumType lang)
- recLabel :: forall (lang :: Language) f. Functor f => (Text -> f Text) -> RecordEntry lang -> f (RecordEntry lang)
- recValue :: forall (lang1 :: Language) (lang2 :: Language) f. Functor f => (TypeInfo lang1 -> f (TypeInfo lang2)) -> RecordEntry lang1 -> f (RecordEntry lang2)
Documentation
data SumType (lang :: Language) Source #
Generic representation of your Haskell types.
Constructors
SumType (TypeInfo lang) [DataConstructor lang] [Instance] |
mkSumType :: (Generic t, Typeable t, GDataConstructor (Rep t)) => Proxy t -> SumType 'Haskell Source #
Create a representation of your sum (and product) types,
for doing type translations and writing it out to your PureScript modules.
In order to get the type information we use a dummy variable of type Proxy
(YourType).
equal :: forall a (t :: Language). Eq a => Proxy a -> SumType t -> SumType t Source #
Ensure that an Eq
instance is generated for your type.
data DataConstructor (lang :: Language) Source #
Constructors
DataConstructor | |
Fields
|
Instances
Show (DataConstructor lang) Source # | |
Defined in Language.PureScript.Bridge.SumType Methods showsPrec :: Int -> DataConstructor lang -> ShowS # show :: DataConstructor lang -> String # showList :: [DataConstructor lang] -> ShowS # | |
Eq (DataConstructor lang) Source # | |
Defined in Language.PureScript.Bridge.SumType Methods (==) :: DataConstructor lang -> DataConstructor lang -> Bool # (/=) :: DataConstructor lang -> DataConstructor lang -> Bool # |
data RecordEntry (lang :: Language) Source #
Constructors
RecordEntry | |
Instances
Show (RecordEntry lang) Source # | |
Defined in Language.PureScript.Bridge.SumType Methods showsPrec :: Int -> RecordEntry lang -> ShowS # show :: RecordEntry lang -> String # showList :: [RecordEntry lang] -> ShowS # | |
Eq (RecordEntry lang) Source # | |
Defined in Language.PureScript.Bridge.SumType Methods (==) :: RecordEntry lang -> RecordEntry lang -> Bool # (/=) :: RecordEntry lang -> RecordEntry lang -> Bool # |
Purescript typeclass instances that can be generated for your Haskell types.
Constructors
Encode | |
EncodeJson | |
Decode | |
DecodeJson | |
Generic | |
Newtype | |
Eq | |
Ord |
nootype :: forall (lang :: Language). [DataConstructor lang] -> Maybe Instance Source #
The Purescript typeclass Newtype
might be derivable if the original
Haskell type was a simple type wrapper.
getUsedTypes :: forall (lang :: Language). SumType lang -> Set (TypeInfo lang) Source #
Get all used types in a sum type.
This includes all types found at the right hand side of a sum type definition, not the type parameters of the sum type itself
constructorToTypes :: forall (lang :: Language). DataConstructor lang -> Set (TypeInfo lang) -> Set (TypeInfo lang) Source #
sigConstructor :: forall (lang :: Language) f. Functor f => (Text -> f Text) -> DataConstructor lang -> f (DataConstructor lang) Source #
sigValues :: forall (lang1 :: Language) (lang2 :: Language) f. Functor f => (Either [TypeInfo lang1] [RecordEntry lang1] -> f (Either [TypeInfo lang2] [RecordEntry lang2])) -> DataConstructor lang1 -> f (DataConstructor lang2) Source #
sumTypeInfo :: forall f (lang :: Language). Functor f => (TypeInfo lang -> f (TypeInfo lang)) -> SumType lang -> f (SumType lang) Source #
TypInfo lens for SumType
.
sumTypeConstructors :: forall f (lang :: Language). Functor f => ([DataConstructor lang] -> f [DataConstructor lang]) -> SumType lang -> f (SumType lang) Source #
DataConstructor lens for SumType
.
recLabel :: forall (lang :: Language) f. Functor f => (Text -> f Text) -> RecordEntry lang -> f (RecordEntry lang) Source #
recValue :: forall (lang1 :: Language) (lang2 :: Language) f. Functor f => (TypeInfo lang1 -> f (TypeInfo lang2)) -> RecordEntry lang1 -> f (RecordEntry lang2) Source #