On Mon, Oct 11, 2004 at 04:32:08PM +0400, Serge D. Mechveliani wrote: > First, thanks to the people who correct me about `equivalence', > (I skip the name because the letter was addressed privately). > > Because we do not mean to compile each program to the equivalent > one of > error "bottom"
Your proposal is more in the direction to allow the program `print
(let x = x::Int in x)' to print 42 :-)
> The simplified version of the program is
>
> main = hSetBuffering stdout NoBuffering >> putStr (out "\n")
>
> out :: String -> String
>
> out = let valueTakingLong = last [1 .. (10^7)] > 0
> in
> if valueTakingLong then ('a' :) . ('b' :)
> else ('a' :) . ('b' :)
>
> The author intended 'a' to appear immediately.
> But it appears only after a long time.
Then the author has to write out accordingly.
Compare with:
primes :: [Integer]
primes = ...
main = if (odd (last primes))
then putStrLn "There is a largest prime number!"
>> putStrLn "It is odd!"
else putStrLn "There is a largest prime number!"
>> putStrLn "It is 2!"
I would not want to have that changed to
main = putStrLn "There is a largest prime number!"
>> if (odd (last primes))
then putStrLn "It is odd!"
else putStrLn "It is 2!"
Another example is in the use of `interact'. You dot not want to
print a partial answer before a question is given.
Greetings,
Carsten
--
Carsten Schultz (2:38, 33:47), FB Mathematik, FU Berlin
http://carsten.codimi.de/
PGP/GPG key on the pgp.net key servers,
fingerprint on my home page.
pgprPl8BZK0Bp.pgp
Description: PGP signature
_______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
