[Haskell-cafe] Simple program. Simple problem?
Peter Verswyvelen
bugfact at gmail.com
Sun Oct 11 18:42:16 EDT 2009
btw I always find it amusing to play with interact and lazy IO:
guess :: [Char] -> [String] -> [String]
guess (c:cs) ~(i:is) =
"What's your guess, heads or tails ('h' or 't')?" :
(if [c]==i then "You win!" else "You lose!") :
guess cs is
main = do
gen <- getStdGen
let rs = randomRs (0,1::Int) gen
cs = map ("ht"!!) rs
interact $ unlines . guess cs . lines
On Mon, Oct 12, 2009 at 12:24 AM, Peter Verswyvelen <bugfact at gmail.com>wrote:
> 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/b73e76a5/attachment.html
More information about the Haskell-Cafe
mailing list