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

From HaskellWiki
Revision as of 22:44, 18 January 2011 by Ha$kell (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

. Problema

Am scris functia care transforma gradele Celsius in grade Farenheit 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
- aplela functia noastra de transformare
- scrie rezultatul,

iar codul sa-l transformam in executabil ?


. 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>"

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.