{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UnicodeSyntax #-}
module Data.Class.Closed.Example (
Example₁ (example₁),
Example₂ (example₂)
) where
import Data.Class.Closed.TH (close)
import Data.Proxy (Proxy (..))
close [d|
class Example₁ a where
example₁ ∷ a
instance Example₁ () where
example₁ = ()
class Example₂ a b where
example₂ ∷ a → Proxy (b ∷ Bool)
instance Example₂ a 'True where
example₂ _ = Proxy
|]