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

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