{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeFamilies #-} module Refined.OnlyDigits where import Refined (Predicate(..)) import Data.Char (isDigit) import Data.Monoid ((<>)) import Data.Text (Text) import qualified Data.Text as Text data OnlyDigits instance Predicate OnlyDigits Text where validate _ x = if Text.all isDigit x then Nothing else Just ("Value contains non-digits " <> show x) instance Predicate OnlyDigits String where validate _ x = if all isDigit x then Nothing else Just ("Value contains non-digits " <> show x)