packages feed

early-0.0.0: test/Main.hs

{-# OPTIONS -F -pgmF=early #-}

module Main (main) where

import Control.Early
import System.Environment

data Error =
  MissingEnv String
  deriving (Show)

grabEnv :: String -> IO (Either Error String)
grabEnv key = do
  result <- lookupEnv key
  pure (maybe (Left (MissingEnv key)) Right result)

main :: IO ()
main = do
  result <- app
  print result

app :: IO (Either Error String)
app = do
  path <- fmap (maybe (Left (MissingEnv "PATH")) Right) $ lookupEnv "PATH"?
  grabEnv "PWD"?
  magic <- grabEnv "PATH"?
  pure (Right (path ++ magic))