Példa:
Szintaxis:
where
kulcsszó.Szemantika: Korlátozott látókör a változók (y
, f
) számára.
A lokális definíciók korlátozott látókörű konstans és függvénydefiníciók.
A lokális definíciók szintaktikája:
where
kulcsszó vezeti be.A res
globális definíció, azaz a modulban mindenütt látható. Az f
és y
lokális definíciók, ezek csak egymás számára láthatóak, továbbá láthatóak a where
előtti definícióban.
A where
kulcsszót érdemes a sor végére tenni. A where
írható a következő sorba is, de mindenképp beljebb kell húzni, mint az azt megelőző definíciót.
Lokális definíciót akkor érdemes használni, ha egyidejűleg teljesül a következő két kitétel:
A függvénykompozíció definiálása lokális definícióval:
(.) :: (b -> c) -> (a -> b) -> (a -> c)
f . g = h where
h x = f (g x)
A függvénykompozíció definiálása lokális definíció nélkül:
(.) :: (b -> c) -> (a -> b) -> (a -> c)
(f . g) x = f (g x)
Konstans definiálásakor a konstans neve helyett írhatunk tetszőleges mintát:
Ezzel öt konstanst definiáltunk:
A konstans minták hasznosak, ha egy n-est visszaadó függvény végeredményére akarunk mintát illeszteni. Példa:
Prelude.splitAt
[*]Definiáljuk újra a splitAt
függvényt! Készítsünk a következőnél hatékonyabb definíciót:
Definiáljuk az összefésüléses rendezést! A egynél több elemű listákat osszunk ketté (split
), majd rendezés után fésüljük össze a két részt (az esetszétválasztás sortMerge
függvénye).