vessel-0.3.0.1: src/Data/Vessel/Void.hs
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveGeneric #-}
module Data.Vessel.Void where
import Data.Aeson
import GHC.Generics
import Data.Functor.Const
import Data.Functor.Identity
import Data.Kind (Type)
import Data.Patch (Group(..))
import Data.Vessel.Class
import Reflex.Query.Class
-- | Completely empty View.
data VoidV (v :: Type -> Type) = VoidV
deriving (Eq, Ord, Show, Generic)
instance FromJSON (VoidV a)
instance ToJSON (VoidV a)
instance Semigroup (VoidV x) where
_ <> _ = VoidV
instance Monoid (VoidV x) where
mempty = VoidV
instance Group (VoidV x) where
negateG _ = VoidV
instance View VoidV where
instance Query (VoidV (Const x)) where
type QueryResult (VoidV (Const x)) = VoidV Identity
crop _ = id
instance EmptyView VoidV where
emptyV = VoidV