[Haskell-cafe] Re: Unexpected results with simple IO

Emil Axelsson emax at cs.chalmers.se
Tue Feb 21 02:51:47 EST 2006


Unfortunately, I don't know how to make the arrow keys work in rxvt. I'm not the 
right person to ask about such things...
I don't think it's possible (unless GHC is built for Cygwin, or something).
Does anybody else know?

I use an alias

   alias ghciW='cmd /c start ghci'

That way I can start GHCi in a new DOS window from rxvt. I usually want two 
windows anyway -- one for the interactive session and one to compile other modules.

/ Emil



Maurício skrev:
>   I'm also using GHC 6.4.1 and rxvt v2.7.10. The problem does occur in 
> compiled code, but everything is OK in ghci!
>   hFlush stdout did solve the problem, as expected.
>   I've just started using rxvt. If you have tips on how to make ghci 
> work well with rxvt, please share them with me (for instance, how to set 
> the top arrow to repeat the last line, instead of moving the cursor one 
> live above. I don't understand very well how those applications handle 
> keyboard).
> 
>   Best,
>   Maurício
> 
> Emil Axelsson wrote:
>> What version of GHC are you using?
>> Your code works for me in rxvt in Cygwin, with GHC 6.4.1. But I 
>> remember having that same problem earlier (in some earlier GHC 
>> version, so it may be fixed by now).
>>
>> The solution was to run hFlush after each putStr, like so:
>>
>>   import System.IO (hFlush, stdout)
>>
>>   do putStr "..."
>>      hHlush stdout
>>      ...
>>
>> If I remember correctly, the problem only occurred in GHCi and Hugs -- 
>> not when compiling the code.
>>
>> / Emil
>>
>>
>>
>> Maurício skrev:
>>
>>>   You're right... I was running the example in rxvt, in cygwin. Now I 
>>> tried in Windows command shell and it works.
>>>
>>>   Thanks,
>>>   Maurício
>>>
>>> Cale Gibbard wrote:
>>>
>>>> That doesn't happen for me at all, it works just fine. Maybe it's
>>>> something wrong with your terminal? You could possibly try playing
>>>> with the buffering settings on stdout, using hSetBuffering in
>>>> System.IO.
>>>>
>>>>  - Cale
>>>>
>>>> On 17/02/06, Maurício <briqueabraque at yahoo.com> wrote:
>>>>
>>>>>   Dear Haskell users,
>>>>>
>>>>>   I have a problem using IO. The small test program below asks the 
>>>>> user
>>>>> to guess from a list of random numbers between 1 and 10. Everything
>>>>> works well excepts for one problem: all the messages ("Guess a
>>>>> number...", "Right..." and "Wrong...") are printed after the program
>>>>> finishes, i.e., I have to use it blind. I'm afraid I misunderstand
>>>>> something important about lazyness or monads... What am I doing wrong?
>>>>>
>>>>>   Thanks,
>>>>>   Maurício
>>>>>
>>>>> module Main where
>>>>> import Random
>>>>>
>>>>> main = do
>>>>>    r_gen <- getStdGen --random generator
>>>>>    let r_list = (randomRs (1,10) r_gen) --random list
>>>>>    guess_loop (r_list)
>>>>>
>>>>> guess_loop (r:r_others) = do
>>>>>    putStrLn "Guess a number between 1 and 10:"
>>>>>    n <- readLn
>>>>>    if n==r
>>>>>       then do
>>>>>          putStrLn "Right! :)"
>>>>>          return ()
>>>>>       else do
>>>>>          putStrLn "Wrong... :("
>>>>>          guess_loop r_others
>>>>>
>>>>> _______________________________________________
>>>>> Haskell-Cafe mailing list
>>>>> Haskell-Cafe at haskell.org
>>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>>
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list