predicate-typed-0.7.4.0: Predicates, Refinement types and Dsl

Safe HaskellNone
LanguageHaskell2010

Predicate.Data.IO

Contents

Description

promoted io functions

Synopsis

file handling

data ReadFile p #

similar to readFile

>>> pz @(ReadFile "LICENSE" >> 'Just Id >> Len > 0) ()
Val True
>>> pz @(FileExists "xyzzy") ()
Val False
Instances
(PP p x ~ String, P p x) => P (ReadFile p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (ReadFile p) x :: Type #

Methods

eval :: MonadEval m => proxy (ReadFile p) -> POpts -> x -> m (TT (PP (ReadFile p) x)) #

Show (ReadFile p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> ReadFile p -> ShowS #

show :: ReadFile p -> String #

showList :: [ReadFile p] -> ShowS #

type PP (ReadFile p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (ReadFile p :: Type) x = Maybe String

data ReadFileBinary p #

similar to readFile

Instances
(PP p x ~ String, P p x) => P (ReadFileBinary p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (ReadFileBinary p) x :: Type #

Methods

eval :: MonadEval m => proxy (ReadFileBinary p) -> POpts -> x -> m (TT (PP (ReadFileBinary p) x)) #

Show (ReadFileBinary p) # 
Instance details

Defined in Predicate.Data.IO

type PP (ReadFileBinary p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

data FileExists p #

similar to doesFileExist

Instances
P (FileExistsT p) x => P (FileExists p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (FileExists p) x :: Type #

Methods

eval :: MonadEval m => proxy (FileExists p) -> POpts -> x -> m (TT (PP (FileExists p) x)) #

Show (FileExists p) # 
Instance details

Defined in Predicate.Data.IO

type PP (FileExists p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (FileExists p :: Type) x

data ReadDir p #

similar to listDirectory

Instances
(PP p x ~ String, P p x) => P (ReadDir p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (ReadDir p) x :: Type #

Methods

eval :: MonadEval m => proxy (ReadDir p) -> POpts -> x -> m (TT (PP (ReadDir p) x)) #

Show (ReadDir p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> ReadDir p -> ShowS #

show :: ReadDir p -> String #

showList :: [ReadDir p] -> ShowS #

type PP (ReadDir p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (ReadDir p :: Type) x = Maybe [FilePath]

data DirExists p #

similar to doesDirectoryExist

>>> pz @(DirExists ".") ()
Val True
>>> pz @(DirExists "xxy") ()
Val False
Instances
P (DirExistsT p) x => P (DirExists p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (DirExists p) x :: Type #

Methods

eval :: MonadEval m => proxy (DirExists p) -> POpts -> x -> m (TT (PP (DirExists p) x)) #

Show (DirExists p) # 
Instance details

Defined in Predicate.Data.IO

type PP (DirExists p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (DirExists p :: Type) x

data AppendFile (s :: Symbol) p #

append to a file

Instances
P (AppendFileT s p) x => P (AppendFile s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (AppendFile s p) x :: Type #

Methods

eval :: MonadEval m => proxy (AppendFile s p) -> POpts -> x -> m (TT (PP (AppendFile s p) x)) #

Show (AppendFile s p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> AppendFile s p -> ShowS #

show :: AppendFile s p -> String #

showList :: [AppendFile s p] -> ShowS #

type PP (AppendFile s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (AppendFile s p :: Type) x

data WriteFile (s :: Symbol) p #

write to file, without overwriting

Instances
P (WriteFileT s p) x => P (WriteFile s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (WriteFile s p) x :: Type #

Methods

eval :: MonadEval m => proxy (WriteFile s p) -> POpts -> x -> m (TT (PP (WriteFile s p) x)) #

Show (WriteFile s p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> WriteFile s p -> ShowS #

show :: WriteFile s p -> String #

showList :: [WriteFile s p] -> ShowS #

type PP (WriteFile s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (WriteFile s p :: Type) x

data WriteFile' (s :: Symbol) p #

write to file, overwriting if needed

Instances
P (WriteFileT' s p) x => P (WriteFile' s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (WriteFile' s p) x :: Type #

Methods

eval :: MonadEval m => proxy (WriteFile' s p) -> POpts -> x -> m (TT (PP (WriteFile' s p) x)) #

Show (WriteFile' s p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> WriteFile' s p -> ShowS #

show :: WriteFile' s p -> String #

showList :: [WriteFile' s p] -> ShowS #

type PP (WriteFile' s p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (WriteFile' s p :: Type) x

screen

data Stdout p #

write a string value to stdout

Instances
P (StdoutT p) x => P (Stdout p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (Stdout p) x :: Type #

Methods

eval :: MonadEval m => proxy (Stdout p) -> POpts -> x -> m (TT (PP (Stdout p) x)) #

Show (Stdout p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> Stdout p -> ShowS #

show :: Stdout p -> String #

showList :: [Stdout p] -> ShowS #

type PP (Stdout p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (Stdout p :: Type) x

data Stderr p #

write a string value to stderr

Instances
P (StderrT p) x => P (Stderr p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (Stderr p) x :: Type #

Methods

eval :: MonadEval m => proxy (Stderr p) -> POpts -> x -> m (TT (PP (Stderr p) x)) #

Show (Stderr p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> Stderr p -> ShowS #

show :: Stderr p -> String #

showList :: [Stderr p] -> ShowS #

type PP (Stderr p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (Stderr p :: Type) x

data Stdin #

read a value from stdin

Instances
Show Stdin # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> Stdin -> ShowS #

show :: Stdin -> String #

showList :: [Stdin] -> ShowS #

P Stdin x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP Stdin x :: Type #

Methods

eval :: MonadEval m => proxy Stdin -> POpts -> x -> m (TT (PP Stdin x)) #

type PP Stdin x # 
Instance details

Defined in Predicate.Data.IO

type PP Stdin x = String

type ReadIO (t :: Type) = ReadIO' t "Enter value" #

read in a value of a given type from stdin with a prompt: similar to readIO

type ReadIO' (t :: Type) s = Stdout (s <> ":") >> (Stdin >> ReadP t Id) #

environment

data ReadEnv p #

read an environment variable: similar to getEnv

>>> pz @(ReadEnv "PATH" >> 'Just Id >> 'True) ()
Val True
Instances
(PP p x ~ String, P p x) => P (ReadEnv p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (ReadEnv p) x :: Type #

Methods

eval :: MonadEval m => proxy (ReadEnv p) -> POpts -> x -> m (TT (PP (ReadEnv p) x)) #

Show (ReadEnv p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> ReadEnv p -> ShowS #

show :: ReadEnv p -> String #

showList :: [ReadEnv p] -> ShowS #

type PP (ReadEnv p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (ReadEnv p :: Type) x = Maybe String

data ReadEnvAll #

read all the environment variables as key value pairs: similar to getEnvironment

Instances
Show ReadEnvAll # 
Instance details

Defined in Predicate.Data.IO

P ReadEnvAll a # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP ReadEnvAll a :: Type #

Methods

eval :: MonadEval m => proxy ReadEnvAll -> POpts -> a -> m (TT (PP ReadEnvAll a)) #

type PP ReadEnvAll a # 
Instance details

Defined in Predicate.Data.IO

type PP ReadEnvAll a = [(String, String)]

date time

data TimeUtc #

get the current time using UTCTime

Instances
Show TimeUtc # 
Instance details

Defined in Predicate.Data.IO

P TimeUtc a # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP TimeUtc a :: Type #

Methods

eval :: MonadEval m => proxy TimeUtc -> POpts -> a -> m (TT (PP TimeUtc a)) #

type PP TimeUtc a # 
Instance details

Defined in Predicate.Data.IO

type PP TimeUtc a = UTCTime

data TimeZt #

get the current time using ZonedTime

Instances
Show TimeZt # 
Instance details

Defined in Predicate.Data.IO

P TimeZt a # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP TimeZt a :: Type #

Methods

eval :: MonadEval m => proxy TimeZt -> POpts -> a -> m (TT (PP TimeZt a)) #

type PP TimeZt a # 
Instance details

Defined in Predicate.Data.IO

random

data GenIO #

generate a random number: see newStdGen

Instances
Show GenIO # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> GenIO -> ShowS #

show :: GenIO -> String #

showList :: [GenIO] -> ShowS #

P GenIO x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP GenIO x :: Type #

Methods

eval :: MonadEval m => proxy GenIO -> POpts -> x -> m (TT (PP GenIO x)) #

type PP GenIO x # 
Instance details

Defined in Predicate.Data.IO

type PP GenIO x = StdGen

data GenPure p #

similar to mkStdGen

>>> pz @(GenPure Id) 1234
Val 1235 1
Instances
(PP p x ~ Int, P p x) => P (GenPure p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (GenPure p) x :: Type #

Methods

eval :: MonadEval m => proxy (GenPure p) -> POpts -> x -> m (TT (PP (GenPure p) x)) #

Show (GenPure p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> GenPure p -> ShowS #

show :: GenPure p -> String #

showList :: [GenPure p] -> ShowS #

type PP (GenPure p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (GenPure p :: Type) x = StdGen

data GenNext p #

similar to next

Instances
(RandomGen (PP p x), P p x) => P (GenNext p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (GenNext p) x :: Type #

Methods

eval :: MonadEval m => proxy (GenNext p) -> POpts -> x -> m (TT (PP (GenNext p) x)) #

Show (GenNext p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> GenNext p -> ShowS #

show :: GenNext p -> String #

showList :: [GenNext p] -> ShowS #

type PP (GenNext p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (GenNext p :: Type) x = (Int, PP p x)

data GenSplit p #

similar to split

Instances
(RandomGen (PP p x), P p x) => P (GenSplit p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (GenSplit p) x :: Type #

Methods

eval :: MonadEval m => proxy (GenSplit p) -> POpts -> x -> m (TT (PP (GenSplit p) x)) #

Show (GenSplit p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> GenSplit p -> ShowS #

show :: GenSplit p -> String #

showList :: [GenSplit p] -> ShowS #

type PP (GenSplit p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (GenSplit p :: Type) x = (PP p x, PP p x)

data GenRange p #

similar to genRange

Instances
(RandomGen (PP p x), P p x) => P (GenRange p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (GenRange p) x :: Type #

Methods

eval :: MonadEval m => proxy (GenRange p) -> POpts -> x -> m (TT (PP (GenRange p) x)) #

Show (GenRange p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> GenRange p -> ShowS #

show :: GenRange p -> String #

showList :: [GenRange p] -> ShowS #

type PP (GenRange p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (GenRange p :: Type) x = (Int, Int)

data RandomNext (t :: Type) p #

get the next random number of type t using generator r : similar to random

>>> pz @(UnfoldN 5 (RandomNext Bool Id) Id) (mkStdGen 3)
Val [True,True,False,True,True]
Instances
(Random t, P p x, Show (PP p x), RandomGen (PP p x)) => P (RandomNext t p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (RandomNext t p) x :: Type #

Methods

eval :: MonadEval m => proxy (RandomNext t p) -> POpts -> x -> m (TT (PP (RandomNext t p) x)) #

Show (RandomNext t p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> RandomNext t p -> ShowS #

show :: RandomNext t p -> String #

showList :: [RandomNext t p] -> ShowS #

type PP (RandomNext t p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (RandomNext t p :: Type) x = (t, PP p x)

data RandomList n (t :: Type) p #

get a list of n random numbers of type t using generator p: similar to randoms

>>> pz @(RandomList 10 Bool Id) (mkStdGen 4)
Val ([True,True,False,True,True,True,True,False,False,True],2036574526 1336516156)
Instances
P (RandomListT n t p) x => P (RandomList n t p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (RandomList n t p) x :: Type #

Methods

eval :: MonadEval m => proxy (RandomList n t p) -> POpts -> x -> m (TT (PP (RandomList n t p) x)) #

Show (RandomList n t p) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> RandomList n t p -> ShowS #

show :: RandomList n t p -> String #

showList :: [RandomList n t p] -> ShowS #

type PP (RandomList n t p :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (RandomList n t p :: Type) x

data RandomRNext (t :: Type) p q r #

get the next random number of type t in range between p and q using generator r : similar to randomR

>>> pz @(Foldl (Fst >> Second (RandomRNext Int 1 100 Id) >> '(L21 :+ Fst, L22)) '( MEmptyT [Int] ,Id) (1...5)) (mkStdGen 3)
Val ([12,26,33,94,64],781515869 652912057)
>>> pz @(UnfoldN 10 (RandomRNext _ (C "A") (C "H") Id) Id) (mkStdGen 3)
Val "DBABDDEEEA"
Instances
(Random t, P r x, RandomGen (PP r x), Show (PP r x), PP p x ~ t, PP q x ~ t, P p x, P q x) => P (RandomRNext t p q r :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (RandomRNext t p q r) x :: Type #

Methods

eval :: MonadEval m => proxy (RandomRNext t p q r) -> POpts -> x -> m (TT (PP (RandomRNext t p q r) x)) #

Show (RandomRNext t p q r) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> RandomRNext t p q r -> ShowS #

show :: RandomRNext t p q r -> String #

showList :: [RandomRNext t p q r] -> ShowS #

type PP (RandomRNext t p q r :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (RandomRNext t p q r :: Type) x = (t, PP r x)

data RandomRList n (t :: Type) p q r #

list n random numbers of type t in range between p and q using generator r : similar to randomRs

>>> pz @(RandomRList 10 Int 0 6 Id) (mkStdGen 1)
Val ([6,6,5,1,3,0,3,6,5,2],1244126523 1336516156)
>>> pz @(RandomRList 10 _ (C "A") (C "F") Id) (mkStdGen 1)
Val ("EEBCBEFBEF",1244126523 1336516156)
Instances
P (RandomRListT n t p q r) x => P (RandomRList n t p q r :: Type) x # 
Instance details

Defined in Predicate.Data.IO

Associated Types

type PP (RandomRList n t p q r) x :: Type #

Methods

eval :: MonadEval m => proxy (RandomRList n t p q r) -> POpts -> x -> m (TT (PP (RandomRList n t p q r) x)) #

Show (RandomRList n t p q r) # 
Instance details

Defined in Predicate.Data.IO

Methods

showsPrec :: Int -> RandomRList n t p q r -> ShowS #

show :: RandomRList n t p q r -> String #

showList :: [RandomRList n t p q r] -> ShowS #

type PP (RandomRList n t p q r :: Type) x # 
Instance details

Defined in Predicate.Data.IO

type PP (RandomRList n t p q r :: Type) x