From 78818f2f5359b9ffd807ab434999ca8322d044f7 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Sun, 7 Jan 2018 13:46:38 +0100 Subject: [PATCH] guess --- guess/guess.cabal | 3 ++- guess/package.yaml | 4 +--- guess/src-exe/Main.hs | 6 ++++-- guess/src/Guess.hs | 20 ++++++++++++++++++++ hwp.hsfiles | 2 -- 5 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 guess/src/Guess.hs diff --git a/guess/guess.cabal b/guess/guess.cabal index 73646f6..b43c8a9 100644 --- a/guess/guess.cabal +++ b/guess/guess.cabal @@ -2,7 +2,7 @@ -- -- see: https://github.com/sol/hpack -- --- hash: 03d70f5a6be06635113793430fa21caa3c0766706d9eee0a561507d82cd760ca +-- hash: b0bd48edc90ce1eed0fa5dbe1b4f6f321e28b02044e8d324cfe04b67c5839142 name: guess version: 0.1.0.0 @@ -35,6 +35,7 @@ library base >=4.8 && <5 , protolude exposed-modules: + Guess Lib other-modules: Paths_guess diff --git a/guess/package.yaml b/guess/package.yaml index 14039f2..56d1b2d 100644 --- a/guess/package.yaml +++ b/guess/package.yaml @@ -21,8 +21,6 @@ dependencies: - protolude library: source-dirs: src - exposed-modules: - - Lib executables: guess-exe: main: Main.hs @@ -69,4 +67,4 @@ benchmarks: dependencies: - criterion >=1.1 - guess -stability: alpha (experimental) \ No newline at end of file +stability: alpha (experimental) diff --git a/guess/src-exe/Main.hs b/guess/src-exe/Main.hs index dfbdebc..5832c7e 100644 --- a/guess/src-exe/Main.hs +++ b/guess/src-exe/Main.hs @@ -1,6 +1,8 @@ import Protolude -import Lib (inc) +import Guess (guess) main :: IO () -main = print (inc 41) +main = do + guess + putText "Bye!" diff --git a/guess/src/Guess.hs b/guess/src/Guess.hs new file mode 100644 index 0000000..e224941 --- /dev/null +++ b/guess/src/Guess.hs @@ -0,0 +1,20 @@ +module Guess + ( guess + ) where + +import Protolude + +guess :: IO () +guess = guessBetween 0 120 + +guessBetween :: Integer -> Integer -> IO () +guessBetween minAge maxAge = do + let age = (maxAge + minAge) `div` 2 + if minAge == maxAge + then putText ("You are " <> show age) + else do + putText ("Are you younger than " <> show age <> "?") + answer <- getLine + case answer of + "y" -> guessBetween minAge (age - 1) + _ -> guessBetween (if age == minAge then age + 1 else age) maxAge diff --git a/hwp.hsfiles b/hwp.hsfiles index 2505c17..8d3cc1b 100644 --- a/hwp.hsfiles +++ b/hwp.hsfiles @@ -22,8 +22,6 @@ dependencies: - protolude library: source-dirs: src - exposed-modules: - - Lib executables: {{ name }}-exe: main: Main.hs