Difference between revisions of "Cum se scrie Hello World in Haskell ?"

From HaskellWiki
Jump to navigation Jump to search
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
[[Category:Ro]]
  +
<center>
  +
  +
http://www.haskell.org/wikiupload/3/35/Banim7.gif
  +
  +
Haskell ruleaza si sub Linux si sub Win-dos !
  +
Fiti mai destepti si luati un computer cu '''Sistem de operare Mandriva Linux''' !
  +
(Aceasta este o parodie a bannerului unei campanii publicitare, in spiritul dreptului la replica si al libertatii opiniei.)
  +
</center>
  +
  +
----
  +
 
Programul "Hello World" se '''scrie''' asa cum vedeti mai jos. Este un modul numit '''Main''' cu o functie constanta '''main''' care are tipul '''IO ()'''. Acesta este tipul '''actiunilor de I/O'''.
 
Programul "Hello World" se '''scrie''' asa cum vedeti mai jos. Este un modul numit '''Main''' cu o functie constanta '''main''' care are tipul '''IO ()'''. Acesta este tipul '''actiunilor de I/O'''.
   
Line 20: Line 32:
 
Adesea '''main''' este scrisa in do-notatie. Incercati programul:
 
Adesea '''main''' este scrisa in do-notatie. Incercati programul:
   
  +
<haskell>
 
module Main where
 
module Main where
   
Line 25: Line 38:
   
 
return ()
 
return ()
  +
</haskell>
 
 
sau varianta cu sintaxa explicita:
 
sau varianta cu sintaxa explicita:
   
  +
<haskell>
 
 
module Main where
 
module Main where
   
 
main = do { putStr "Hello, World\n" ; return () }
 
main = do { putStr "Hello, World\n" ; return () }
  +
</haskell>
 
 
----
 
----
 
Practic cum rulati acest program: <br>
 
Practic cum rulati acest program: <br>
Line 46: Line 59:
 
----
 
----
 
Tema: Ganditi-va cum s-ar putea lucra cu o lista infinita de actiuni de IO din care doar unele (in numar finit) se vor efectua la executie !
 
Tema: Ganditi-va cum s-ar putea lucra cu o lista infinita de actiuni de IO din care doar unele (in numar finit) se vor efectua la executie !
  +
----
  +
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
  +
----
  +
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
  +
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ]

Latest revision as of 13:46, 10 February 2011

Banim7.gif

Haskell ruleaza si sub Linux si sub Win-dos ! Fiti mai destepti si luati un computer cu Sistem de operare Mandriva Linux ! (Aceasta este o parodie a bannerului unei campanii publicitare, in spiritul dreptului la replica si al libertatii opiniei.)


Programul "Hello World" se scrie asa cum vedeti mai jos. Este un modul numit Main cu o functie constanta main care are tipul IO (). Acesta este tipul actiunilor de I/O.

module Main where

main = putStr "Hello, World\n"


(Toate aceste actiuni formeaza monada de IO - asta daca ne gandim la setul de actiuni ca la o structura algebrica. Dar asta s-ar putea sa nu va intereseze cand programati cu operatii de IO asa cum pe un contabil nu-l intereseaza teoria structurilor algebrice - grup, inel, corp - care se pot defini de catre un matematician cu numerele cu care el lucreaza.)

Aceasta constanta main are in exemplul nostru valoarea: putStr "Hello World \n".


Cum se executa programul ?

Functia constanta main este o actiune de I/O.

In cursul executiei programului se evalueaza aceasta main (in stilul lazy in care o functioneaza programele Haskell) iar valoarea de I/O obtinuta este executata producand efecte pe ecran. In realitate procesul este ceva mai complicat, Haskell executa o actiunea compusa de I/O evaluind bucati din ea pe masura ce are nevoie de ele. Acest lucru permite sa ne gandim la actiuni de I/O in forma recursiva, la care apelul recursiv se face dupa nevoie. Sunt frecvent folosite.


Adesea main este scrisa in do-notatie. Incercati programul:

 
module Main where

main = do putStr "Hello, World\n"

          return ()

sau varianta cu sintaxa explicita:

module Main where

main = do { putStr "Hello, World\n" ; return () }

Practic cum rulati acest program:
1)La promptul interpretorului Hugs dati spre evaluare constanta main sau orice functie care produce un rezultat din tipul IO ().

2)Puteti rula programul cu: runhugs <numeprogram>.hs
Runhugs incarca Hugs care apoi incarca programul si executa actiunea obtinuta prin evaluarea lui main.
Cel putin sub Linux merge foarte bine.


Nota: Evaluarea unei liste de actiuni de IO NU executa operatiile de pe lista ! Pur si simplu da ca rezultat lista. Actiunile de IO sunt valori de prim ordin ca orice alte date din limbajul Haskell si pot fi puse in liste in structuri, manipulate. Abia la final valoarea de tip IO a lui main este cea care declanseaza efectele.


Tema: Ganditi-va cum s-ar putea lucra cu o lista infinita de actiuni de IO din care doar unele (in numar finit) se vor efectua la executie !


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.