Főmenü megnyitása

Módosítások

nincs szerkesztési összefoglaló
</source>
kifejezésnek.
 
=== Osztályok ===
 
Haskellben, (és általában a Funkcionális nyelvekben) az osztályfogalom eltérő az imperatív nyelvekben megszokottaktól. Imperatív nyelvekben az osztályok az objektumokat osztályozzák, Haskellben a típusokat. Leginkább az interfész fogalomhoz áll kozel, de annal többet képes kifejezni.
 
''Prelude'' ''Show'' osztálya
<source lang=haskell>
class Show a where
showsPrec :: Int -> a -> ShowS
show :: a -> String
showList :: [a] -> ShowS
</source>
Adatok szoveggé alakítására.
Ennek példánya pl. ''Int'', ''Integer'', ''Bool'', de maga a ''String'' is.
 
Feltűnhet, hogy ''a'' típusváltozó, tetszőleges helyen állhat a metódusainak szignatúrájában. Ennek oka, hogy a Haskell tervezői nem látták szukségét egy uj szintaktikus elem beemelésének. Egy fuggveny hivasanal nem szamit hogy az egy egyszeru fuggveny, vagy egy metodus. Ennek meg egy pozitiv hozadeka, hogy egy metodus, illetve osztály több típushoz is tartozhat (lásd: Több paraméteres osztályok).
 
Egy osztály definiálásakkor, lehetőség van egyes függvények alapértelmezett implementációjának megadására is. ''Show'' osztály példányosításakkor is csak ''show'' függvényt kell megadni.
Egy példa példányosításra:
<source lang=haskell>
data Name = NoName
| Name String
instance Show Name where
show NoName = "no name"
show (Name n) = n
</source>
 
 
 
 
 
== Referencia ==
Névtelen felhasználó