Difference between revisions of "Cum deosebeste Haskell un Intreg de un intreg lung ?"
(New page: center|Haskell - Un limbaj functional pur Category:Ro ---- Vechile limbaje obligau programatorul sa scrie 1.0 pentru un real si 1 pentru un i...) |
m |
||
(One intermediate revision by one other user not shown) | |||
Line 6: | Line 6: | ||
Haskell foloseste un mecanism revolutionar, care face ca acelasi 1 , sa zicem, sa functioneze automat si ca intreg scurt din Int si ca intreg lung din Integer si ca real, (ba chiar si ca valoare monadica!) sau alta valoare a unui tip din clasa Num - chiar si un tip definit de utilizator - dupa nevoie. |
Haskell foloseste un mecanism revolutionar, care face ca acelasi 1 , sa zicem, sa functioneze automat si ca intreg scurt din Int si ca intreg lung din Integer si ca real, (ba chiar si ca valoare monadica!) sau alta valoare a unui tip din clasa Num - chiar si un tip definit de utilizator - dupa nevoie. |
||
− | |||
− | [[Category:Rp]] |
||
Nevoia e stabilita de sistemul de tipuri din Haskell care tipizeaza expresia in care apare numarul si decide ce tip este necesar acolo. |
Nevoia e stabilita de sistemul de tipuri din Haskell care tipizeaza expresia in care apare numarul si decide ce tip este necesar acolo. |
||
Line 24: | Line 22: | ||
Astfel, eventualele numere scrise in expresii in care e vorba de comenzi postale sunt transformate automat in numere, deoarece '''Haskell plaseaza automat un apel fromInteger in jurul fiecarui intreg''' , 1 devenind fromInteger(1). |
Astfel, eventualele numere scrise in expresii in care e vorba de comenzi postale sunt transformate automat in numere, deoarece '''Haskell plaseaza automat un apel fromInteger in jurul fiecarui intreg''' , 1 devenind fromInteger(1). |
||
− | |||
Sistemul de tipuri face restul, alege functia care sa transforme acel 1 in ceea ce trebuie. Si gata. 1 a devenit ceea ce era necesar in acea expresie. |
Sistemul de tipuri face restul, alege functia care sa transforme acel 1 in ceea ce trebuie. Si gata. 1 a devenit ceea ce era necesar in acea expresie. |
||
+ | |||
+ | Bibliografie: |
||
+ | |||
+ | [[Image:Tn.jpg]] |
||
+ | Paul Hudak, John Petterson, Joseph H.Fasel, "O mica introducere in Haskell 98" |
||
+ | Cap 9, 10. |
||
+ | Versiunea in limba romana este/va fi editata de MatrixRom. |
||
---- |
---- |
||
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br> |
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br> |
Latest revision as of 22:53, 29 June 2021
Vechile limbaje obligau programatorul sa scrie 1.0 pentru un real si 1 pentru un intreg.
Haskell foloseste un mecanism revolutionar, care face ca acelasi 1 , sa zicem, sa functioneze automat si ca intreg scurt din Int si ca intreg lung din Integer si ca real, (ba chiar si ca valoare monadica!) sau alta valoare a unui tip din clasa Num - chiar si un tip definit de utilizator - dupa nevoie.
Nevoia e stabilita de sistemul de tipuri din Haskell care tipizeaza expresia in care apare numarul si decide ce tip este necesar acolo.
Daca nu poate decide, recurge in ultima instanta la o declaratie default.
Bineinteles, daca utilizatorul vrea ca in tipul ComenziPostale 1 sa insemne Cantitatea "o bucata", va trebui sa:
- introduca tipul ComenziPostale in clasa Num
- sa defineasca functii
fromInteger :: a -> ComenziPostale
Astfel, eventualele numere scrise in expresii in care e vorba de comenzi postale sunt transformate automat in numere, deoarece Haskell plaseaza automat un apel fromInteger in jurul fiecarui intreg , 1 devenind fromInteger(1).
Sistemul de tipuri face restul, alege functia care sa transforme acel 1 in ceea ce trebuie. Si gata. 1 a devenit ceea ce era necesar in acea expresie.
Bibliografie:
Paul Hudak, John Petterson, Joseph H.Fasel, "O mica introducere in Haskell 98" Cap 9, 10. Versiunea in limba romana este/va fi editata de MatrixRom.
<= Inapoi la pagina principala Ro/Haskell.
<- Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'.