[Haskell-cafe] New to Haskell

Cristian Baboi cristi at ot.onrc.ro
Tue Dec 18 05:53:06 EST 2007


Thank you very much!

On Tue, 18 Dec 2007 12:17:54 +0200, Jules Bean <jules at jellybean.co.uk>  
wrote:

> Cristian Baboi wrote:
>> On Tue, 18 Dec 2007 10:29:43 +0200, Miguel Mitrofanov  
>> <miguelimo38 at yandex.ru> wrote:
>>

>>>> - what guarantees are made by the LANGUAGE that an IO action (such  
>>>> as  do
>>>> putStrLn "Hello world" ) is not performed twice
>>>
>>> There are no such guarantees. If you write
>>>
>>> a = putStrLn "Hello world"
>>> main = do {a; a;}
>>>
>>> then your putStrLn would be performed twice. IO actions are  
>>> first-class values, that's a feature, not a bug.
>>   What guarantees that by running the main, the string "Hello world"  
>> will be printed exactly twice ?

> The semantics of IO, and the guarantees of the runtime.
>
> IO specifies that (>>) means "compose two actions to make a larger  
> action which does the first actions, then the second action".
>
> [do {a; a;} is notation for a >> a]
>
> The RTS specifies that the "main" action is performed exactly once.

Is this dependent on the implementation (if I use GHC or Hugs) or is  
something that the language say ?
Aside: I tried something like this in WinHugs:

do { xxx<-getLine ; putStrLn xxx }

and pressed two keys at once for the "getLine" action.

The result I've got was an "infinite" loop !!!


>>>> - the lambda expressions can be written (input) but cannot be printed
>>>> (output)
>>
>>> Yes, since two different lambda expressions can denote the same  
>>> function.
>> I just want the sistem to be able to print one of these expressions !
>>  Its this too much to ask ?
>> I find it very strange that I can write a lambda expresion, but the  
>> system cannot.

> Haskell doesn't contain a code representation natively. It is not a  
> "homoiconic" language. Just like C, C++, Java, Python, Perl, and Ruby,  
> the compiler/interpreter is free to transform code into some more  
> efficient form for running (including transformation all the way to  
> native code, which is what ghc does) and once it has done so, it retains  
> no information about the "shape of" the source code which yielded the  
> function.

Thank you.


________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
  part000.txt - is OK
http://www.eset.com


More information about the Haskell-Cafe mailing list