packages feed

mmzk-env-0.4.0.0: app/EnumExample.hs

{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE TypeApplications #-}

module Main where

import Data.Env.EnumParser
import Data.Env.TypeParser

data Gender = Male | Female
  deriving (Show, Eq, Enum, Bounded)
  deriving TypeParser via (EnumParser Gender)

main :: IO ()
main = do
  putStrLn "=== Valid values ==="
  print $ parseType @Gender "Male"    -- Right Male
  print $ parseType @Gender "Female"  -- Right Female

  putStrLn ""
  putStrLn "=== Invalid values ==="
  print $ parseType @Gender "male"    -- Left: wrong case
  print $ parseType @Gender "Other"   -- Left: not a constructor
  print $ parseType @Gender ""        -- Left: empty