From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- fp2/week1/camil/Galgje.icl | 58 ---------------------------------- fp2/week1/camil/Random.dcl | 19 ----------- fp2/week1/camil/Random.icl | 20 ------------ fp2/week1/camil/SimpleFileIO.dcl | 14 -------- fp2/week1/camil/SimpleFileIO.icl | 39 ----------------------- fp2/week1/camil/StdMaybe.dcl | 41 ------------------------ fp2/week1/camil/StdMaybe.icl | 65 -------------------------------------- fp2/week1/camil/lexicon.txt | 18 ----------- fp2/week1/camil/round-0.txt | 7 ---- fp2/week1/camil/round-1.txt | 7 ---- fp2/week1/camil/round-2.txt | 7 ---- fp2/week1/camil/round-3.txt | 7 ---- fp2/week1/camil/round-4.txt | 7 ---- fp2/week1/camil/round-5.txt | 7 ---- fp2/week1/camil/round-lost.txt | 7 ---- fp2/week1/camil/week1.tar.gz | Bin 3450 -> 0 bytes fp2/week1/mart/Echo | Bin 103744 -> 0 bytes fp2/week1/mart/Echo.icl | 11 ------- fp2/week1/mart/Galgje | Bin 103512 -> 0 bytes fp2/week1/mart/Galgje.icl | 13 -------- fp2/week1/mart/GalgjeWF.dcl | 5 --- fp2/week1/mart/Random.dcl | 19 ----------- fp2/week1/mart/Random.icl | 20 ------------ fp2/week1/mart/RandomGetallen | Bin 105976 -> 0 bytes fp2/week1/mart/RandomGetallen.dcl | 7 ---- fp2/week1/mart/RandomGetallen.icl | 33 ------------------- fp2/week1/mart/SimpleFileIO.dcl | 14 -------- fp2/week1/mart/SimpleFileIO.icl | 39 ----------------------- 28 files changed, 484 deletions(-) delete mode 100644 fp2/week1/camil/Galgje.icl delete mode 100644 fp2/week1/camil/Random.dcl delete mode 100644 fp2/week1/camil/Random.icl delete mode 100644 fp2/week1/camil/SimpleFileIO.dcl delete mode 100644 fp2/week1/camil/SimpleFileIO.icl delete mode 100644 fp2/week1/camil/StdMaybe.dcl delete mode 100644 fp2/week1/camil/StdMaybe.icl delete mode 100644 fp2/week1/camil/lexicon.txt delete mode 100644 fp2/week1/camil/round-0.txt delete mode 100644 fp2/week1/camil/round-1.txt delete mode 100644 fp2/week1/camil/round-2.txt delete mode 100644 fp2/week1/camil/round-3.txt delete mode 100644 fp2/week1/camil/round-4.txt delete mode 100644 fp2/week1/camil/round-5.txt delete mode 100644 fp2/week1/camil/round-lost.txt delete mode 100644 fp2/week1/camil/week1.tar.gz delete mode 100755 fp2/week1/mart/Echo delete mode 100644 fp2/week1/mart/Echo.icl delete mode 100755 fp2/week1/mart/Galgje delete mode 100644 fp2/week1/mart/Galgje.icl delete mode 100644 fp2/week1/mart/GalgjeWF.dcl delete mode 100644 fp2/week1/mart/Random.dcl delete mode 100644 fp2/week1/mart/Random.icl delete mode 100755 fp2/week1/mart/RandomGetallen delete mode 100644 fp2/week1/mart/RandomGetallen.dcl delete mode 100644 fp2/week1/mart/RandomGetallen.icl delete mode 100644 fp2/week1/mart/SimpleFileIO.dcl delete mode 100644 fp2/week1/mart/SimpleFileIO.icl (limited to 'fp2/week1') diff --git a/fp2/week1/camil/Galgje.icl b/fp2/week1/camil/Galgje.icl deleted file mode 100644 index 75b09d0..0000000 --- a/fp2/week1/camil/Galgje.icl +++ /dev/null @@ -1,58 +0,0 @@ -// Mart Lubbers s4109503, Camil Staps s4498062 - -module Galgje - -import StdEnv, SimpleFileIO, RandomGetallen - -lexicon_file = "lexicon.txt" - -// Is a Char a member of a String -isMemberString :: String Char -> Bool -isMemberString "" c = False -isMemberString s c = s.[0] == c || isMemberString (s % (1,size s - 1)) c - -// From the slides -skip_nl :: String -> String -skip_nl str = if (size str > 0 && str.[size str-1] == '\n') (str%(0,size str-2)) str - -// From a String and a List of guesses (Chars), return a String that shows dots for letters that were not guessed yet -stripUnknown :: String [Char] -> String -stripUnknown s g = toString [if (isMember c g) c '.' \\ c <- (fromString s)] - -// Get a random word from the lexicon file -randomWord :: *env -> (Maybe String, *env) | FileSystem env -randomWord env -# (ss,env) = readLines lexicon_file env -| ss == Nothing = (Nothing, env) -# (seed,env) = getNewRandomSeed env -| otherwise = (Just (skip_nl ((shuffle (fromJust ss) seed)!!0)), env) - -// word, guesses, mistakes left, stdio -> (win, new guesses, stdio) -play :: String [Char] Int *File *env -> (Bool, [Char], *File, *env) | FileSystem env -play w g n io world -# io = io <<< stripUnknown w g <<< '\n' -| stripUnknown w g == w = (True, g, io, world) -# (round,world) = readFile ("round-" +++ (toString n) +++ ".txt") world -| round == Nothing = abort "Couldn't get gallow" -# io = io <<< (fromJust round) -# io = io <<< "Guess (" <<< toString n <<< "): " -# (ok,g`,io) = freadc io -# (_,io) = freadline io // to read until the next \n -| not ok = abort "Couldn't get guessed letter" -| isMemberString w g` = play w [g`:g] n io world -| n == 0 = (False, [g`:g], io, world) -| otherwise = play w [g`:g] (n-1) io world - -Start :: *World -> *World -Start world -# (word,world) = randomWord world -| word == Nothing = abort "Couldn't get random word" -# word = fromJust word -# (io,world) = stdio world -# (win,g,io,world) = play word [] 5 io world -# (lost,world) = readFile "round-lost.txt" world -| lost == Nothing = abort "Couldn't get gallow" -# io = if win (io <<< "You win!\n") (io <<< "You lose!\n" <<< fromJust lost) -# (ok,world) = fclose io world -| not ok = abort "Couldn't close stdio" -| otherwise = world diff --git a/fp2/week1/camil/Random.dcl b/fp2/week1/camil/Random.dcl deleted file mode 100644 index 47a7c18..0000000 --- a/fp2/week1/camil/Random.dcl +++ /dev/null @@ -1,19 +0,0 @@ -definition module Random - - // Random number generator voor Linux gebruikers - // interface compatible met Random.dcl (helaas) - // -- mschool@science.ru.nl - -import StdFile - -:: RandomSeed - -// nullRandomSeed generates a fixed RandomSeed -nullRandomSeed :: RandomSeed - -// GetNewRandomSeed generates a good RandomSeed, using /dev/urandom -getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | FileSystem env - -// Given a RandomSeed, Random generates a random number and a new RandomSeed. -random :: !RandomSeed -> .(!Int, !RandomSeed) - diff --git a/fp2/week1/camil/Random.icl b/fp2/week1/camil/Random.icl deleted file mode 100644 index b6e0768..0000000 --- a/fp2/week1/camil/Random.icl +++ /dev/null @@ -1,20 +0,0 @@ -implementation module Random - -import StdFile, StdList, StdMisc, StdArray, Random - -:: RandomSeed :== Int - -nullRandomSeed :: RandomSeed -nullRandomSeed = 0 - -getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | FileSystem env -getNewRandomSeed env -# (ok, src, env) = sfopen "/dev/urandom" FReadData env -| not ok => abort "could not open /dev/urandom" -# (bytes, src) = sfreads src 4 - seed = foldl (\x y->(x<<8)+toInt y) 0 [c \\ c<-:bytes] -| otherwise => (seed, env) - -random :: !RandomSeed -> .(!Int, !RandomSeed) -random seed = (seed>>16 bitand 0xFFFF, seed*0x08088405+1) - diff --git a/fp2/week1/camil/SimpleFileIO.dcl b/fp2/week1/camil/SimpleFileIO.dcl deleted file mode 100644 index 1bd97da..0000000 --- a/fp2/week1/camil/SimpleFileIO.dcl +++ /dev/null @@ -1,14 +0,0 @@ -definition module SimpleFileIO - -import StdFile, StdOverloaded, StdMaybe - -// 1. -readFile :: String *env -> (Maybe String, *env) | FileSystem env -writeFile :: String String *env -> (Bool, *env) | FileSystem env - -// 2. -readLines :: String *env -> (Maybe [String],*env) | FileSystem env -writeLines :: String [String] *env -> (Bool, *env) | FileSystem env - -// 3. -//mapFile :: String String (a -> b) *env -> (Bool, *env) | FileSystem env & ... a & ... b diff --git a/fp2/week1/camil/SimpleFileIO.icl b/fp2/week1/camil/SimpleFileIO.icl deleted file mode 100644 index b2a483a..0000000 --- a/fp2/week1/camil/SimpleFileIO.icl +++ /dev/null @@ -1,39 +0,0 @@ -implementation module SimpleFileIO - -import StdEnv, StdFile, StdOverloaded, StdMaybe - -// 1. -readFile :: String *env -> (Maybe String, *env) | FileSystem env -readFile s env -# (ss, env) = readLines s env -| ss == Nothing = (Nothing, env) -| otherwise = (Just (foldl (+++) "" (fromJust ss)), env) - -writeFile :: String String *env -> (Bool, *env) | FileSystem env -writeFile fn s env -# (ok, outfile, env) = fopen fn FWriteText env -| not ok = (False, env) -# outfile = fwrites s outfile -# (ok, env) = fclose outfile env -| otherwise = (ok, env) - -// 2. -readLines :: String *env -> (Maybe [String],*env) | FileSystem env -readLines s env -# (ok, infile, env) = sfopen s FReadText env -| not ok = (Nothing, env) -| otherwise = (Just (fst (readLines` infile)), env) -where - readLines` :: File -> ([String], File) - readLines` file - | sfend file = ([], file) - # (line, file) = sfreadline file - # (ss, file) = readLines` file - | otherwise = ([line : ss], file) - -writeLines :: String [String] *env -> (Bool, *env) | FileSystem env -writeLines fn ss env = writeFile fn (foldl (+++) "" [s +++ "\n" \\ s <- ss]) env - -// 3. -//mapFile :: String String (a -> b) *env -> (Bool, *env) | FileSystem env & ... a & ... b - diff --git a/fp2/week1/camil/StdMaybe.dcl b/fp2/week1/camil/StdMaybe.dcl deleted file mode 100644 index 2403683..0000000 --- a/fp2/week1/camil/StdMaybe.dcl +++ /dev/null @@ -1,41 +0,0 @@ -definition module StdMaybe - -// ******************************************************************************** -// Clean StdLib library module, version 1.0 -// ******************************************************************************** - -from StdFunc import :: St; -from StdOverloaded import class ==(..); - -:: Maybe x - = Just x - | Nothing - -isJust :: !(Maybe .x) -> Bool // case @1 of (Just _) -> True; _ -> False -isNothing :: !(Maybe .x) -> Bool // not o isJust -fromJust :: !(Maybe .x) -> .x // \(Just x) -> x - -// for possibly unique elements: -u_isJust :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x) -u_isNothing :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x) - -accMaybe :: .(St .x .a) !u:(Maybe .x) -> (!Maybe .a,!u:Maybe .x) -// accMaybe f (Just x) = (Just (fst (f x)),Just (snd (f x))) -// accMaybe f Nothing = (Nothing,Nothing) - -mapMaybe :: .(.x -> .y) !(Maybe .x) -> Maybe .y -// mapMaybe f (Just x) = Just (f x) -// mapMaybe f Nothing = Nothing - -instance == (Maybe x) | == x -// Nothing==Nothing -// Just a ==Just b <= a==b - -maybeToList :: !(Maybe .a) -> [.a]; -// returns list with no or one element - -listToMaybe :: ![.a] -> .Maybe .a; -// returns Just head of list if possible - -catMaybes :: ![Maybe .a] -> .[.a]; -// catMaybes ms = [ m \\ Just m <- ms ] diff --git a/fp2/week1/camil/StdMaybe.icl b/fp2/week1/camil/StdMaybe.icl deleted file mode 100644 index 4eed325..0000000 --- a/fp2/week1/camil/StdMaybe.icl +++ /dev/null @@ -1,65 +0,0 @@ -implementation module StdMaybe - -// ******************************************************************************** -// Clean StdLib library module, version 1.0 -// ******************************************************************************** - -from StdFunc import :: St; -from StdOverloaded import class ==(..); - -:: Maybe x - = Just x - | Nothing - -isJust :: !(Maybe .x) -> Bool -isJust Nothing = False -isJust _ = True - -isNothing :: !(Maybe .x) -> Bool -isNothing Nothing = True -isNothing _ = False - -u_isJust :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x) -u_isJust nothing=:Nothing - = (False, nothing) -u_isJust just - = (True, just) - -u_isNothing :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x) -u_isNothing nothing=:Nothing - = (True, nothing) -u_isNothing just - = (False,just) - -fromJust :: !(Maybe .x) -> .x -fromJust (Just x) = x - -accMaybe :: .(St .x .a) !u:(Maybe .x) -> (!Maybe .a,!u:Maybe .x) -accMaybe f (Just x) - # (a,x) = f x - = (Just a,Just x) -accMaybe _ nothing - = (Nothing,nothing) - -mapMaybe :: .(.x -> .y) !(Maybe .x) -> Maybe .y -mapMaybe f (Just x) = Just (f x) -mapMaybe _ nothing = Nothing - -instance == (Maybe x) | == x where - (==) Nothing maybe = case maybe of - Nothing -> True - just -> False - (==) (Just a) maybe = case maybe of - Just b -> a==b - nothing -> False - -maybeToList :: !(Maybe .a) -> [.a]; -maybeToList Nothing = [] -maybeToList (Just a) = [a] - -listToMaybe :: ![.a] -> .Maybe .a; -listToMaybe [] = Nothing -listToMaybe [a:_] = Just a - -catMaybes :: ![Maybe .a] -> .[.a]; -catMaybes ms = [ m \\ Just m <- ms ] diff --git a/fp2/week1/camil/lexicon.txt b/fp2/week1/camil/lexicon.txt deleted file mode 100644 index 9c2ad4e..0000000 --- a/fp2/week1/camil/lexicon.txt +++ /dev/null @@ -1,18 +0,0 @@ -armada -balinese -bergens -cyprus -europeanen -guldensporenslag -hollandermop -jordaans -lagerhuis -luiker -mensenzoon -opperwezen -randstad -samaritaan -sovjettijd -thailand -vietnamese -zeeuws diff --git a/fp2/week1/camil/round-0.txt b/fp2/week1/camil/round-0.txt deleted file mode 100644 index 7236e17..0000000 --- a/fp2/week1/camil/round-0.txt +++ /dev/null @@ -1,7 +0,0 @@ - ------ - | \ | - o \| - /O\ | - | - | -________ diff --git a/fp2/week1/camil/round-1.txt b/fp2/week1/camil/round-1.txt deleted file mode 100644 index 8694aad..0000000 --- a/fp2/week1/camil/round-1.txt +++ /dev/null @@ -1,7 +0,0 @@ - ------ - | \ | - o \| - | - | - | -________ diff --git a/fp2/week1/camil/round-2.txt b/fp2/week1/camil/round-2.txt deleted file mode 100644 index d46d77c..0000000 --- a/fp2/week1/camil/round-2.txt +++ /dev/null @@ -1,7 +0,0 @@ - ------ - | \ | - \| - | - | - | -________ diff --git a/fp2/week1/camil/round-3.txt b/fp2/week1/camil/round-3.txt deleted file mode 100644 index 9bdd2ba..0000000 --- a/fp2/week1/camil/round-3.txt +++ /dev/null @@ -1,7 +0,0 @@ - ------ - \ | - \| - | - | - | -________ diff --git a/fp2/week1/camil/round-4.txt b/fp2/week1/camil/round-4.txt deleted file mode 100644 index 41ca216..0000000 --- a/fp2/week1/camil/round-4.txt +++ /dev/null @@ -1,7 +0,0 @@ - - | - | - | - | - | -________ diff --git a/fp2/week1/camil/round-5.txt b/fp2/week1/camil/round-5.txt deleted file mode 100644 index f29c0dd..0000000 --- a/fp2/week1/camil/round-5.txt +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - -________ diff --git a/fp2/week1/camil/round-lost.txt b/fp2/week1/camil/round-lost.txt deleted file mode 100644 index 7ec2fa7..0000000 --- a/fp2/week1/camil/round-lost.txt +++ /dev/null @@ -1,7 +0,0 @@ - ------ - | \ | - o \| - /O\ | - / \ | - | -________ diff --git a/fp2/week1/camil/week1.tar.gz b/fp2/week1/camil/week1.tar.gz deleted file mode 100644 index 3533265..0000000 Binary files a/fp2/week1/camil/week1.tar.gz and /dev/null differ diff --git a/fp2/week1/mart/Echo b/fp2/week1/mart/Echo deleted file mode 100755 index cf2fb79..0000000 Binary files a/fp2/week1/mart/Echo and /dev/null differ diff --git a/fp2/week1/mart/Echo.icl b/fp2/week1/mart/Echo.icl deleted file mode 100644 index 30a6f4b..0000000 --- a/fp2/week1/mart/Echo.icl +++ /dev/null @@ -1,11 +0,0 @@ -module Echo - -import StdEnv - - -Start :: *World -> *World -Start world -# (console, world) = stdio world -# (line, console) = freadline console -| not (fend console) = fwrites line -| otherwise = world diff --git a/fp2/week1/mart/Galgje b/fp2/week1/mart/Galgje deleted file mode 100755 index d46de77..0000000 Binary files a/fp2/week1/mart/Galgje and /dev/null differ diff --git a/fp2/week1/mart/Galgje.icl b/fp2/week1/mart/Galgje.icl deleted file mode 100644 index e5106ee..0000000 --- a/fp2/week1/mart/Galgje.icl +++ /dev/null @@ -1,13 +0,0 @@ -module Galgje - -import StdEnv, Random - -//randomWord :: *env -> (Maybe String, *env) | FileSystem env -//randomWord env -//# (ss,env) = readLines lexicon_file env -//| ss == Nothing = (Nothing, env) -//# (seed,env) = getNewRandomSeed env -//| otherwise = (Just (skip_nl ((shuffle (fromJust ss) seed)!!0)), env) - -Start :: *World -> *World -Start world = world diff --git a/fp2/week1/mart/GalgjeWF.dcl b/fp2/week1/mart/GalgjeWF.dcl deleted file mode 100644 index a777b95..0000000 --- a/fp2/week1/mart/GalgjeWF.dcl +++ /dev/null @@ -1,5 +0,0 @@ -definition module GalgjeWF - -import iTasks - -galgje :: [Workflow] diff --git a/fp2/week1/mart/Random.dcl b/fp2/week1/mart/Random.dcl deleted file mode 100644 index 47a7c18..0000000 --- a/fp2/week1/mart/Random.dcl +++ /dev/null @@ -1,19 +0,0 @@ -definition module Random - - // Random number generator voor Linux gebruikers - // interface compatible met Random.dcl (helaas) - // -- mschool@science.ru.nl - -import StdFile - -:: RandomSeed - -// nullRandomSeed generates a fixed RandomSeed -nullRandomSeed :: RandomSeed - -// GetNewRandomSeed generates a good RandomSeed, using /dev/urandom -getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | FileSystem env - -// Given a RandomSeed, Random generates a random number and a new RandomSeed. -random :: !RandomSeed -> .(!Int, !RandomSeed) - diff --git a/fp2/week1/mart/Random.icl b/fp2/week1/mart/Random.icl deleted file mode 100644 index b6e0768..0000000 --- a/fp2/week1/mart/Random.icl +++ /dev/null @@ -1,20 +0,0 @@ -implementation module Random - -import StdFile, StdList, StdMisc, StdArray, Random - -:: RandomSeed :== Int - -nullRandomSeed :: RandomSeed -nullRandomSeed = 0 - -getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | FileSystem env -getNewRandomSeed env -# (ok, src, env) = sfopen "/dev/urandom" FReadData env -| not ok => abort "could not open /dev/urandom" -# (bytes, src) = sfreads src 4 - seed = foldl (\x y->(x<<8)+toInt y) 0 [c \\ c<-:bytes] -| otherwise => (seed, env) - -random :: !RandomSeed -> .(!Int, !RandomSeed) -random seed = (seed>>16 bitand 0xFFFF, seed*0x08088405+1) - diff --git a/fp2/week1/mart/RandomGetallen b/fp2/week1/mart/RandomGetallen deleted file mode 100755 index 0482437..0000000 Binary files a/fp2/week1/mart/RandomGetallen and /dev/null differ diff --git a/fp2/week1/mart/RandomGetallen.dcl b/fp2/week1/mart/RandomGetallen.dcl deleted file mode 100644 index 66a2c6c..0000000 --- a/fp2/week1/mart/RandomGetallen.dcl +++ /dev/null @@ -1,7 +0,0 @@ -definition module RandomGetallen - -import Random - -random_n :: Int RandomSeed -> ([Int],RandomSeed) -random_inf :: RandomSeed -> [Int] -//shuffle :: [a] RandomSeed -> [a] diff --git a/fp2/week1/mart/RandomGetallen.icl b/fp2/week1/mart/RandomGetallen.icl deleted file mode 100644 index b756c91..0000000 --- a/fp2/week1/mart/RandomGetallen.icl +++ /dev/null @@ -1,33 +0,0 @@ -implementation module RandomGetallen - -import StdEnv, Random - -//Start :: *World -> ([Int],*World) -//Start world -//# (rs,world) = getNewRandomSeed world -//= (shuffle [1..10] rs,world) - - -Start = shuffle [1..10] nullRandomSeed - -random_n :: Int RandomSeed -> ([Int],RandomSeed) -random_n n seed = seqList (repeatn n random) seed - -random_inf :: RandomSeed -> [Int] -random_inf seed = iterateSt random seed - -iterateSt :: (s -> (a,s)) s -> [a] -iterateSt f s = [a : iterateSt f s`] -where - (a,s`) = f s - -shuffle :: [a] RandomSeed -> [a] -shuffle xs seed = (perms xs) !! ((fst (random seed)) rem (fac (length xs))) - -fac :: Int -> Int -fac 0 = 1 -fac n = n * fac (n-1) - -perms :: [a] -> [[a]] -perms [] = [[]] -perms xs = [[xs!!i : xs`] \\ i <- [0..length xs - 1] , xs` <- perms (take i xs ++ drop (i+1) xs)] diff --git a/fp2/week1/mart/SimpleFileIO.dcl b/fp2/week1/mart/SimpleFileIO.dcl deleted file mode 100644 index 1bd97da..0000000 --- a/fp2/week1/mart/SimpleFileIO.dcl +++ /dev/null @@ -1,14 +0,0 @@ -definition module SimpleFileIO - -import StdFile, StdOverloaded, StdMaybe - -// 1. -readFile :: String *env -> (Maybe String, *env) | FileSystem env -writeFile :: String String *env -> (Bool, *env) | FileSystem env - -// 2. -readLines :: String *env -> (Maybe [String],*env) | FileSystem env -writeLines :: String [String] *env -> (Bool, *env) | FileSystem env - -// 3. -//mapFile :: String String (a -> b) *env -> (Bool, *env) | FileSystem env & ... a & ... b diff --git a/fp2/week1/mart/SimpleFileIO.icl b/fp2/week1/mart/SimpleFileIO.icl deleted file mode 100644 index b2a483a..0000000 --- a/fp2/week1/mart/SimpleFileIO.icl +++ /dev/null @@ -1,39 +0,0 @@ -implementation module SimpleFileIO - -import StdEnv, StdFile, StdOverloaded, StdMaybe - -// 1. -readFile :: String *env -> (Maybe String, *env) | FileSystem env -readFile s env -# (ss, env) = readLines s env -| ss == Nothing = (Nothing, env) -| otherwise = (Just (foldl (+++) "" (fromJust ss)), env) - -writeFile :: String String *env -> (Bool, *env) | FileSystem env -writeFile fn s env -# (ok, outfile, env) = fopen fn FWriteText env -| not ok = (False, env) -# outfile = fwrites s outfile -# (ok, env) = fclose outfile env -| otherwise = (ok, env) - -// 2. -readLines :: String *env -> (Maybe [String],*env) | FileSystem env -readLines s env -# (ok, infile, env) = sfopen s FReadText env -| not ok = (Nothing, env) -| otherwise = (Just (fst (readLines` infile)), env) -where - readLines` :: File -> ([String], File) - readLines` file - | sfend file = ([], file) - # (line, file) = sfreadline file - # (ss, file) = readLines` file - | otherwise = ([line : ss], file) - -writeLines :: String [String] *env -> (Bool, *env) | FileSystem env -writeLines fn ss env = writeFile fn (foldl (+++) "" [s +++ "\n" \\ s <- ss]) env - -// 3. -//mapFile :: String String (a -> b) *env -> (Bool, *env) | FileSystem env & ... a & ... b - -- cgit v1.2.3