Poate aceeasi functie sa aiba doua tipuri in doua programe ?
Contactul cu un limbaj de programare nou naste intrebari, mai ales cand este vorba de un limbaj atat de inovator. Cea mai buna cale de a va familiariza cu Haskell este sa conversati cu un interpretor, cum este Hugs. Sau sa folositi GHC si sa conversati cu GHCi (GHC Interactiv). Cautati explicatiile care v-ar ajuta in lista de mai jos. Link-urile rosii,daca exista, sunt ca de obicei spre viitoare pagini in curs de constructie.
. Explicatia in termeni de HaskellIn sistemul de tipuri al Haskell-ului tipul unei entitati este Ce intelegem prin cel mai mic tip ? Cel mai mic tip e inteles in sensul: Intre tipuri se stabileste deci o relatie de ordine, bazata pe generalitate Cand rezolvi (in tipuri!) o singura ecuatie cum este y f = f (y f) y :: (a->a)-> a Daca insa acea formula y f = f (y f) apare in program impreuna Deci y::((b->c)-> (b->c)) -> (b->c) in acest caz. Dintre cele doua, y :: (a->a)-> a si y::((b->c)-> (b->c)) -> (b->c) sistemul Haskell o va alege pe cea mai mica, pe cea mai particulara,pe
. Explicatia prin analogieUn fenomen similar (oarecum) se intampla si in matematica valorilor intregi. Fie (in)ecuatia: x >= 0 Evident ca are un cel mai mic x ce-o satisface. Sa adaugam acum inca o restrictie: Obtin sistemul: Evident ca are acum o alta 'cea mai mica solutie'. Asa ceva se intampla si cu tipurile in Haskell, cand folosim ecuatii recursive, Pagina indexata la indexul Categories:Ro <= Inapoi la pagina principala Ro/Haskell. |