[Haskell-cafe] Simple program. Simple problem?
Peter Verswyvelen
bugfact at gmail.com
Sun Oct 11 18:24:26 EDT 2009
It always helps to put a Debug.Trace.trace:
in if trace (show (fromEnum c)) $ c == ((!!) "ht"
randInt) then p
What's your guess, heads or tails ('h' or 't')?
h
104
You win!
What's your guess, heads or tails ('h' or 't')?
*10*
You lose!
What's your guess, heads or tails ('h' or 't')?
So getChar also receives the linefeed character.
An easy way to get around this, is to use getLine instead and just use the
first character, as in
>> fmap head getLine
But of course we're hacking away here :-)
On Mon, Oct 12, 2009 at 12:10 AM, michael rice <nowgate at yahoo.com> wrote:
> What is going wrong here?
>
> Michael
>
> =======
>
> import System.Random
>
> coinToss :: StdGen -> IO ()
> coinToss gen = putStrLn "What's your guess, heads or tails ('h' or 't')?"
> >> getChar
> >>= \c -> let (randInt, _) = randomR(0,1) gen :: (Int,
> StdGen)
> in if c == ((!!) "ht" randInt) then putStrLn "You win!"
> else putStrLn "You lose!"
>
> main = do
> gen <- getStdGen
> coinToss gen
> gen <- newStdGen
> main
>
> =======
>
> [michael at localhost ~]$ runhaskell cointoss.hs
> What's your guess, heads or tails ('h' or 't')?
> h
> You win!
> What's your guess, heads or tails ('h' or 't')?
> You lose!
> What's your guess, heads or tails ('h' or 't')?
> h
> You lose!
> What's your guess, heads or tails ('h' or 't')?
> You lose!
> What's your guess, heads or tails ('h' or 't')?
> ^Ccointoss.hs: cointoss.hs: interrupted
> [michael at localhost ~]$
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091011/bc801c74/attachment.html
More information about the Haskell-Cafe
mailing list