Copyright | (c) Sirui Lu 2021-2024 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Grisette.Internal.TH.MergeConstructor
Description
Synopsis
- mkMergeConstructor :: String -> Name -> Q [Dec]
- mkMergeConstructor' :: [String] -> Name -> Q [Dec]
Documentation
Arguments
:: String | Prefix for generated wrappers |
-> Name | The type to generate the wrappers for |
-> Q [Dec] |
Generate constructor wrappers that wraps the result in a container with
TryMerge
.
mkMergeConstructor "mrg" ''Maybe
generates
mrgJust :: (Mergeable (Maybe a), Applicative m, TryMerge m) => m (Maybe a) mrgNothing = mrgSingle Nothing mrgJust :: (Mergeable (Maybe a), Applicative m, TryMerge m) => a -> m (Maybe a) mrgJust = \x -> mrgSingle (Just x)
Arguments
:: [String] | Names for generated wrappers |
-> Name | The type to generate the wrappers for |
-> Q [Dec] |
Generate constructor wrappers that wraps the result in a container with
TryMerge
with provided names.
mkMergeConstructor' ["mrgTuple2"] ''(,)
generates
mrgTuple2 :: (Mergeable (a, b), Applicative m, TryMerge m) => a -> b -> u (a, b) mrgTuple2 = \v1 v2 -> mrgSingle (v1, v2)