packages feed

validated-literals-0.1.0: examples/Even.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
module Even where

import ValidLiterals

newtype Even = Even Integer

instance Integral a => Validate a Even where
    fromLiteral i
        | even i = Just . Even $ fromIntegral i
        | otherwise = Nothing

    spliceValid _ (Even i) = [|| Even i ||]