Personal tools

Cum scriu functia main ca sa pot compila si obtine un executabil ?

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
 
Line 1: Line 1:
  +
[[Category:Ro]
 
==. Problema ==
 
==. Problema ==
   
Line 51: Line 52:
 
Ce trebuie sa cunoasteti:
 
Ce trebuie sa cunoasteti:
   
1. actiunea de IO pentru scris texte este ''putstr "<string>"''
+
1. actiunea de IO pentru scris texte este ''putStr "<string>"'' . Exista si un ''putStrLn "<string>"'' , care trece apoi pe randul urmator. Similar cu WriteLn din Pascal.
   
 
2. actiunea de IO pentru citit un string din tastatura este ''getLine''. Se foloseste ca in exemplu.
 
2. actiunea de IO pentru citit un string din tastatura este ''getLine''. Se foloseste ca in exemplu.

Latest revision as of 13:44, 10 February 2011

[[Category:Ro]

[edit] 1 . Problema

Am scris functia care transforma gradele Celsius in grade Fahrenheit si Kelvin:

temp   :: Float -> String
 
temp x =  (show (x * 1.8 + 32) ++ " Fahrenheit, " ++ show (x + 273.15) ++ " Kelvin")

Cum scriem functia main ca sa putem:

- citi date
- apela functia noastra de transformare
- scrie rezultatul,

iar codul sa-l transformam in executabil ?


[edit] 2 . Raspuns

module Main where
 
 
 
main :: IO ()
 
main = do { putStrLn "Dati nr de grade Celsius :";
 
	    strbuf <- getLine;
 
	    print $ temp (read strbuf::Float ) ;
 
	    return ();
 
	   }
 
 
 
temp   :: Float -> String
 
temp x =  (show (x * 1.8 + 32) ++ " Fahrenheit, " ++ show (x + 273.15) ++ " Kelvin")


Ce trebuie sa cunoasteti:

1. actiunea de IO pentru scris texte este putStr "<string>" . Exista si un putStrLn "<string>" , care trece apoi pe randul urmator. Similar cu WriteLn din Pascal.

2. actiunea de IO pentru citit un string din tastatura este getLine. Se foloseste ca in exemplu.

3. Functia read se aplica textului din buffer -- un string -- dar trebuie sa stie in ce tip de data il va transforma. Se foloseste deci ca: read <stringul de intrare> :: <tipul rezultatului asteptat>

4. Conversiile din alt tip in string se fac cu functia show, daca bineinteles tipul este din clasa Show. Iar tipurile simple si compuse din tipuri predefinite -- liste, n-uple -- sunt din clasa Show. Dar asa ceva stiati! :)

5. actiunea de IO pentru scrierea la iesire este print si este polimorfica , fiind produsul dintre putStr si show.

6. Pentru a compila fara probleme numiti modului Main , fisierul Main.hs si compilati cu: ghc --make Main.hs

Alte comenzi penmtru compilat pot include librarii: vedeti OpenGl in Haskell.

[edit] 3 . Compilare si rulare

Asa arata setul de comenzi dat la terminal:

student3@student3-desktop:~/Desktop$ ghc  --make Temperatura.hs
 
[1 of 1] Compiling Main             ( Temperatura.hs, Temperatura.o )
 
Linking Temperatura ...
 
student3@student3-desktop:~/Desktop$ ./Temperatura
 
Dati nr de grade Celsius :
56
 
"132.79999 Fahrenheit, 329.15 Kelvin"
 
student3@student3-desktop:~/Desktop$

Intrebare pusa de damiamcs, ian 2011