on master help sign in
Merge pull request #1336 from Heather/system
9183cd7Edwin Brady
libs/effects/Effect/System.idr+5
@@ -11,16 +11,19 @@ data System : Effect where
11 Args : { () } System (List String)
11 Args : { () } System (List String)
12 Time : { () } System Int
12 Time : { () } System Int
13 GetEnv : String -> { () } System (Maybe String)
13 GetEnv : String -> { () } System (Maybe String)
14+ CSystem : String -> { () } System Int
14
15
15instance Handler System IO where
16instance Handler System IO where
16 handle () Args k = do x <- getArgs; k x ()
17 handle () Args k = do x <- getArgs; k x ()
17 handle () Time k = do x <- time; k x ()
18 handle () Time k = do x <- time; k x ()
18 handle () (GetEnv s) k = do x <- getEnv s; k x ()
19 handle () (GetEnv s) k = do x <- getEnv s; k x ()
20+ handle () (CSystem s) k = do x <- system s; k x ()
19
21
20instance Handler System (IOExcept a) where
22instance Handler System (IOExcept a) where
21 handle () Args k = do x <- ioe_lift getArgs; k x ()
23 handle () Args k = do x <- ioe_lift getArgs; k x ()
22 handle () Time k = do x <- ioe_lift time; k x ()
24 handle () Time k = do x <- ioe_lift time; k x ()
23 handle () (GetEnv s) k = do x <- ioe_lift $ getEnv s; k x ()
25 handle () (GetEnv s) k = do x <- ioe_lift $ getEnv s; k x ()
26+ handle () (CSystem s) k = do x <- ioe_lift $ system s; k x ()
24
27
25--- The Effect and associated functions
28--- The Effect and associated functions
26
29
@@ -36,3 +39,5 @@ time = call Time
36getEnv : Handler System e => String -> { [SYSTEM] } Eff e (Maybe String)
39getEnv : Handler System e => String -> { [SYSTEM] } Eff e (Maybe String)
37getEnv s = call $ GetEnv s
40getEnv s = call $ GetEnv s
38
41
42+system : Handler System e => String -> { [SYSTEM] } Eff e Int
43+system s = call $ CSystem s
libs/neweffects/Effect/System.idr+5
@@ -11,16 +11,19 @@ data System : Effect where
11 Args : { () } System (List String)
11 Args : { () } System (List String)
12 Time : { () } System Int
12 Time : { () } System Int
13 GetEnv : String -> { () } System (Maybe String)
13 GetEnv : String -> { () } System (Maybe String)
14+ CSystem : String -> { () } System Int
14
15
15instance Handler System IO where
16instance Handler System IO where
16 handle () Args k = do x <- getArgs; k x ()
17 handle () Args k = do x <- getArgs; k x ()
17 handle () Time k = do x <- time; k x ()
18 handle () Time k = do x <- time; k x ()
18 handle () (GetEnv s) k = do x <- getEnv s; k x ()
19 handle () (GetEnv s) k = do x <- getEnv s; k x ()
20+ handle () (CSystem s) k = do x <- system s; k x ()
19
21
20instance Handler System (IOExcept a) where
22instance Handler System (IOExcept a) where
21 handle () Args k = do x <- ioe_lift getArgs; k x ()
23 handle () Args k = do x <- ioe_lift getArgs; k x ()
22 handle () Time k = do x <- ioe_lift time; k x ()
24 handle () Time k = do x <- ioe_lift time; k x ()
23 handle () (GetEnv s) k = do x <- ioe_lift $ getEnv s; k x ()
25 handle () (GetEnv s) k = do x <- ioe_lift $ getEnv s; k x ()
26+ handle () (CSystem s) k = do x <- ioe_lift $ system s; k x ()
24
27
25--- The Effect and associated functions
28--- The Effect and associated functions
26
29
@@ -36,3 +39,5 @@ time = call Time
36getEnv : String -> { [SYSTEM] } Eff (Maybe String)
39getEnv : String -> { [SYSTEM] } Eff (Maybe String)
37getEnv s = call $ GetEnv s
40getEnv s = call $ GetEnv s
38
41
42+system : String -> { [SYSTEM] } Eff Int
43+system s = call $ CSystem s