packages feed

quick-process-0.0.1: verify-call-specs/VerifyCallSpecs.hs

-- {-# OPTIONS_GHC -ddump-splices #-}
{-# LANGUAGE TemplateHaskell #-}

module VerifyCallSpecs where

import CallSpecs.Find ()
import System.Process.Quick
import System.Process.Quick.Prelude


-- goRef :: forall x. (Typeable x, Data x) => x -> IO x
-- goRef x =
--   case cast x of
--     Just (i :: Refined Positive Int) -> do
--       putStrLn $ "i " <> show (unrefine i * 22)
--       case refine $ (unrefine i) * 22 of
--         Left _e -> pure x
--         Right (caed :: Refined Positive Int) ->
--           case cast caed of
--             Nothing -> pure x
--             Just r -> pure r
--     _ -> pure x

-- go :: forall x. (Typeable x, Data x) => x -> IO x
-- go x =
--   case cast x of
--     Just (Tagged i :: Tagged "a" Int) -> do
--       putStrLn $ "i " <> show (i * 22)
--       case cast (Tagged @"a" $ i * 22) of
--         Nothing -> pure x
--         Just r -> pure r
--     _ -> pure x

-- go1 :: forall x. (Typeable x, Data x) => x -> IO x
-- go1 x =
--   case cast x of
--     Just (Fo i :: Fo "a" Int) -> do
--       putStrLn $ "i " <> show (i * 22)
--       case cast (Fo @"a" $ i * 22) of
--         Nothing -> pure x
--         Just r -> pure r
--     _ -> pure x


-- go2 :: forall x. (Typeable x, Data x) => x -> IO x
-- go2 x
--   | _ `App` a@(TypeRep @(aa :: k2)) `App` _ <- typeOf x -- TypeRep @x
--   , TypeRep <- typeRepKind a -- ?
--   , Just Refl <- eqT @x @(Fo (aa) Int)
--   = do let Fo i = x
--        putStrLn $ "i " <> show (i * 22)
--        pure . Fo $ i * 22

--   | otherwise = pure x

main :: IO ()
main = $(discoverAndVerifyCallSpecs (fromList [TrailingHelpValidate]) 1)