hcobs-0.1.0.0: src/Data/Stuffed/Internal.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE TypeOperators #-}
module Data.Stuffed.Internal
(IsByte)
where
import GHC.TypeLits (CmpNat, ErrorMessage (..), KnownNat, TypeError)
import GHC.Types (Nat)
type IsByte a = (KnownNat a, IsByteLT a (CmpNat a 256) ~ 'True)
type family IsByteLT (n :: Nat) x where
IsByteLT n 'LT = 'True
IsByteLT n _ = TypeError (Text "Stuffed can be parametrized only on bytes" :$$:
Text "(" :<>: ShowType n :<>: Text " is not within range [0, 255]" )