Tipuri polimorfice

From HaskellWiki
Revision as of 22:52, 24 January 2008 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.

In Haskell puteti lucra cu functii al caror tip include un fel de variabile de tip, (inclusiv in parametrii functie al acelor functii!):

De exemplu functia filter (din biblioteca Standard Prelude) care filtreaza o lista are tipul:

filter :: (a -> Bool) -> [a] -> [a]

Adica:
- primeste ca prim parametru un predicat, (predicatul e o functie de la un tip oarecare a la tipul Bool al valorilor booleene)
- al doilea argument e o lista de elemente de tip a (tip necunoscut)
- rezultatul este tot o lista de elemente de tip a.

Functiile definite de utilizator pot fi si ele polimorfice.


Daca intrebati interpretorul Hugs sau compilatorul interactiv GHCi ce tip are functia filter obtineti raspunsul:

Prelude> :t filter
filter :: (a -> Bool) -> [a] -> [a]

O asemenea functie poate filtra ORICE fel de lista. In exemplul de mai jos filtreaza o lista de intregi.

Prelude> filter (>2) [1,2,3,4,1]
[3,4]
Prelude>

Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.