-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExample.hs
More file actions
52 lines (48 loc) · 1.88 KB
/
Example.hs
File metadata and controls
52 lines (48 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import RunGhcBWrap
main :: IO ()
main = do
testRunGhcBWrap $ unlines
[ "{-# LANGUAGE OverloadedStrings #-}"
, "module Main where"
, ""
, "{-custom libraries defined in default.nix-}"
, "import RunGhc.Locate"
, "import RunGhc.Executable"
, "import RunGhc.LocatedModule"
, ""
, "import System.FilePath"
, "import System.Directory"
, "import Data.Text"
, "import Text.IStr"
, "import qualified Data.Text as T"
, "import Data.ByteString"
, "import qualified Data.ByteString.Char8 as BS"
, "import Data.Map"
, "import qualified Data.Map as Map"
, "import Data.Vector (Vector)"
, "import qualified Data.Vector as V"
, "import Data.Time.Clock (getCurrentTime)"
, "import System.Directory (listDirectory)"
, "import System.FilePath ((</>))"
, "import System.Process (readProcess)"
, "import Data.Aeson (encode, object, (.=))"
, "import System.Random (randomRIO)"
, "import System.Environment"
, "import Control.Exception (try, SomeException)"
, "import Control.Monad (forM_)"
, "import Control.Monad.State (State, evalState, put, get)"
, ""
, "main :: IO ()"
, "main = do"
-- , " print =<< getEnv \"PATH\""
, " putStrLn \"holy meta mate\" "
, " Prelude.appendFile \"example.txt\" \"im in a file\""
, " Prelude.appendFile \"example.txt\" \"im in a file\""
, " x <- Prelude.readFile \"example.txt\" "
, " putStrLn $ \"haskell readFile contents: \" <> x"
, " let script = Script $ T.unlines [\"module Main where\", \"f x y = x + y\"]"
, " let exe = Executable { _main = (FromLocatedScript (LocatedScript [PathSegment \"Main\"] script)), _library = [] } "
, " let pathSeg = pathSegsToPath \".hs\" $ getPathSegments (_main exe)"
, " putStrLn $ \"Path of meta-main: \" <> Prelude.show pathSeg"
, " putStrLn $ \"A dream within a dream\""
]