hobbits-1.3: src/Data/Binding/Hobbits/NuMatchingInstances.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
-- |
-- Module : Data.Binding.Hobbits.NuMatchingInstances
-- Copyright : (c) 2020 Edwin Westbrook
--
-- License : BSD3
--
-- Maintainer : westbrook@galois.com
-- Stability : experimental
-- Portability : GHC
--
-- Provides a set of instances of 'NuMatching' for standard types using the
-- template Haskell 'mkNuMatching' function
module Data.Binding.Hobbits.NuMatchingInstances where
import Data.Proxy
import Data.Type.Equality
import Data.Functor.Constant
import Data.Type.RList
import Data.Binding.Hobbits.Mb
import Data.Binding.Hobbits.NuMatching (NuMatching, NuMatchingAny1, mkNuMatching)
import Data.Binding.Hobbits.QQ (nuP)
$(mkNuMatching [t| forall a. NuMatching a => Maybe a |])
$(mkNuMatching [t| forall a b. (NuMatching a, NuMatching b) => Either a b |])
$(mkNuMatching [t| forall ctx a. Member ctx a |])
$(mkNuMatching [t| forall a. Proxy a |])
$(mkNuMatching [t| forall a b. a :~: b |])
$(mkNuMatching [t| forall a b. NuMatching a => Constant a b |])