Skip to content

Commit 3ed090e

Browse files
committed
move to IO folder
1 parent 33b8b94 commit 3ed090e

File tree

6 files changed

+64
-0
lines changed

6 files changed

+64
-0
lines changed
File renamed without changes.

IO/askForNumber.hs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import System.Random
2+
import Control.Monad(when)
3+
4+
main = do
5+
gen <- getStdGen
6+
askForNumber gen
7+
8+
askForNumber :: StdGen -> IO ()
9+
askForNumber gen = do
10+
let (randNumber, newGen) = randomR (1,10) gen :: (Int, StdGen)
11+
putStr "Which number in the range from 1 to 10 am I thinking of?"
12+
numberString <- getLine
13+
when (not $ null numberString) $ do
14+
let number = read numberString
15+
if randNumber == number
16+
then putStrLn "You are correct!"
17+
else putStrLn $ "Sorry, it was " ++ show randNumber
18+
askForNumber newGen
19+
{-- another way:
20+
newStdGen
21+
main
22+
--}

IO/copyFile.hs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import System.Environment
2+
import qualified Data.ByteString.Lazy as B
3+
4+
main = do
5+
(filename1:filename2:_) <- getArgs
6+
copyFile filename1 filename2
7+
8+
copyFile :: FilePath -> FilePath -> IO ()
9+
copyFile source dest = do
10+
contents <- B.readFile source
11+
B.writeFile dest contents
File renamed without changes.

IO/threeCoins.hs

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import System.Random
2+
3+
threeCoins :: StdGen -> (Bool, Bool, Bool)
4+
threeCoins gen =
5+
let (firstCoin, newGen) = random gen
6+
(secondCoin, newGen') = random newGen
7+
(thirdCoin, newGen'') = random newGen'
8+
in (firstCoin, secondCoin, thirdCoin)
9+
10+
randoms' :: (RandomGen g, Random a) => g -> [a]
11+
randoms' gen = let (value, newGen) = random gen in value:randoms' newGen
12+
13+
finiteRandoms :: (RandomGen g, Random a, Num n,Eq n) => n -> g -> ([a],g)
14+
finiteRandoms 0 gen = ([],gen)
15+
finiteRandoms n gen =
16+
let (value, newGen) = random gen
17+
(restOfList, finalGen) = finiteRandoms (n-1) newGen
18+
in (value:restOfList, finalGen)
19+
20+
main = do
21+
gen <- getStdGen
22+
{--
23+
let randomChars = randomRs ('a','z') gen
24+
(first20,rest) = splitAt 20 randomChars
25+
(second20,_) = splitAt 20 rest
26+
putStrLn first20
27+
putStrLn second20
28+
--}
29+
putStrLn $ take 20 (randomRs ('a','z') gen)
30+
gen' <- newStdGen
31+
putStr $ take 20 (randomRs ('a','z') gen')

todo.hs renamed to IO/todo.hs

File renamed without changes.

0 commit comments

Comments
 (0)