Tipuri polimorfice

From HaskellWiki
Revision as of 13:19, 6 December 2007 by Ha$kell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 (din biblioteca Standard Prelude) care filtreaza o lista are tipul:

(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>

<= Inapoi la pagina principala Ro/Haskell