on 93ae498 help sign in
Idris-dev/lib/System.idr
39 lines 987 B history raw
1module System
3import Prelude
5%default partial
6%access public
8getArgs : IO (List String)
9getArgs = do n <- numArgs
10 ga' [] 0 n
11 where
12 numArgs : IO Int
13 numArgs = mkForeign (FFun "idris_numArgs" [FPtr] FInt) prim__vm
15 getArg : Int -> IO String
16 getArg x = mkForeign (FFun "idris_getArg" [FPtr, FInt] (FAny String)) prim__vm x
18 ga' : List String -> Int -> Int -> IO (List String)
19 ga' acc i n = if (i == n) then (return $ reverse acc) else
20 do arg <- getArg i
21 ga' (arg :: acc) (i+1) n
23getEnv : String -> IO (Maybe String)
24getEnv key = do
25 str_ptr <- getEnv'
26 exists <- nullStr str_ptr
27 if exists
28 then pure Nothing
29 else pure (Just str_ptr)
30 where
31 getEnv' : IO String
32 getEnv' = mkForeign (FFun "getenv" [FString] FString) key
34exit : Int -> IO ()
35exit code = mkForeign (FFun "exit" [FInt] FUnit) code
37usleep : Int -> IO ()
38usleep i = mkForeign (FFun "usleep" [FInt] FUnit) i