Új függvényt egyenletrendszer megadásával definiálhatunk.
Először egyszerűbb példákat nézünk, aztán bonyolultabbakat.
Egyparaméteres függvény definiálása:
Kétparaméteres függvény definiálása:
Használat:
Az egyenletek bal oldalának alakja:
A definiálandó függvény neve, aztán a paraméterek (később látunk más lehetőséget is).
A függvény- és változónevek kisbetűvel kell kezdődniük.
Készítsünk egy függvényt ami minden n esetén visszaadja a következő listát: [1, 2, …, n-1, n, n-1, …, 2, 1]!
A két kettőspont után áll a függvény típusa (az értelmezési tartomány és az értékkészlet). A típusozással egyelőre nem foglalkozunk.
Döntsük el az a, b és c számokról, hogy lehetnek-e egy háromszög oldalhosszai!
Definiáljuk újra a Prelude
-beli even
függvényt, ami eldönti egy egész számról, hogy páros-e!
Definiáljuk újra a Prelude
-beli odd
függvényt, ami eldönti egy számról, hogy páratlan-e!
Definiáljuk az oszthatóságot!
Állapítsuk meg egy évről, hogy szökőév-e!
Definiáljunk egy függvényt, ami egy listában előállítja egy szám osztóit!
Definiáljunk egy függvényt, ami egy listába előállítja egy szám valódi osztóit!
A logikai tagadás definíciója két egyenlettel megoldható:
Függvényparaméterek helyett többek között a True
és False
értékek is szerepelhetnek.
Az olyan értékeket, amik szerepelhetnek függvényparaméterek helyett, konstruktoroknak nevezzük.
Az aláhúzás azt jelenti hogy “bármi”.
Az egyenleteknek prioritásuk van, a számolás során egy egyenletet csak akkor használunk ha előbbi egyenletek nem használhatók.
Logikai ÉS másként:
Definiáljuk újra a (||)
operátort.
Definiáljuk a kizáró VAGY függvényt.
Példák:
Használat:
Cseréljük meg egy pár két elemét!
Tükrözzünk egy pontot az x tengelyre!
magnify t
legyen origó középpontú t-vel történő nagyítás.
Tükrözzük a második pontot az első pontra!
Számoljuk ki két pont távolságát!
Az abszolút érték függvény:
A négyzetgyökvonás:
Üres lista: []
Egy elemű lista: [
a]
Két elemű lista: [
a,
b]
…
Nem üres lista: a:
b
Példák (Prelude függvények):
Használat:
Definiáljuk az “1 elemű-e a lista” függvényt mintaillesztéssel.
folytatás következik