Tipuri polimorfice
From HaskellWiki
m |
|||
| Line 1: | Line 1: | ||
| + | [[Category:Ro]] | ||
In Haskell puteti lucra cu functii al caror tip include un fel de variabile de tip, (inclusiv in parametrii functie al acelor functii!): | 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 | + | De exemplu functia ''filter'' (din biblioteca Standard Prelude) care filtreaza o lista |
are tipul: | are tipul: | ||
| - | + | filter :: (a -> Bool) -> [a] -> [a] | |
Adica: <br> | Adica: <br> | ||
| Line 34: | Line 35: | ||
---- | ---- | ||
| - | [http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ] | + | Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro] |
| + | ---- | ||
| + | [http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br> | ||
| + | [http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ] | ||
Revision as of 22:52, 24 January 2008
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.
