A Haskell programok definíciókból és kifejezésekből épülnek fel.
Egy konstans értéket a name = expression alakban definiálunk.
five = 5
six = 3 + 3
A függvényeket name parameters... = expression formában definiáljuk, a paramétereket pedig csak szóköz választja el egymástól.
add number1 number2 = number1 + number2
Egy függvény meghívása szintén kifejezés, és úgy történik, hogy megadjuk a függvény nevét, majd minden paraméteréhez átadunk egy argumentumot, szóközzel elválasztva, akárcsak a függvénydefinícióknál.
five = add 2 3
Egy kifejezés kiértékelési sorrendjét zárójelekkel adhatjuk meg.
six = add 2 (1 * 4)
twelve = add 2 1 * 4
A Haskell a kódrészek határait whitespace és behúzás segítségével jelöli ki. Az olyan kódot, amely valamely kifejezés része, beljebb kell húzni, mint ahol az a kifejezés kezdődik.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
A modulok függvényeket exportálnak. Ez azt jelenti, hogy használhatod azokat a függvényeket, amelyeket a modul az export utasításában elérhetővé tesz. Egy modul definiálhat függvényeket kizárólag belső használatra is. Alapértelmezés szerint azok a függvények, amelyeket nem exportálunk kifejezetten, a modulon kívülről nem használhatók.
A modul elején megadjuk a modul nevét. Ha van egy Calculator.hs nevű fájlunk, akkor a modulunkat Calculator-nek kell elneveznünk. Ezután megadjuk azokat a függvényeket, amelyeket exportál, és ezt követően hozzáfoghatunk a függvények megírásához. Kezdjük tehát ezzel.
module Calculator ( add ) where
https://learnyouahaskell.github.io/modules#making-our-own-modules
A komment olyan szöveg a Haskell-fájlban, amelyet a program nem kódként értelmez.
Elsősorban arra való, hogy te és a többi programozó olvassátok.
Az egysoros kommentekhez van egy egyszerű szintaxis, amely két egymás utáni kötőjelen alapul.
A többsoros kommentek is lehetségesek a {- és -} nyitó és záró határoló párral.
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
Ez a feladat bevezetője bőven merít a Learn You a Haskell for Great Good! anyagából, a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License feltételei szerint.
Ebben a feladatban kódot írsz, hogy segíts megfőzni egy remek lasagnét a kedvenc szakácskönyvedből.
Három részfeladat vár rád, és mindegyik a lasagne elkészítési idejéhez kapcsolódik.
Definiáld az expectedMinutesInOven konstanst, amivel ellenőrizheted, hány percig kell a lasagnének a sütőben lennie. A szakácskönyv szerint a sütőben töltendő várható idő 40 perc:
expectedMinutesInOven
--> 40
Definiáld a preparationTimeInMinutes függvényt, amely paraméterként megkapja a lasagnéhoz adott rétegek számát, és visszaadja, hány percet töltöttél a lasagne előkészítésével, feltéve, hogy egy-egy réteg előkészítése 2 percet vesz igénybe.
preparationTimeInMinutes 3
--> 6
Definiáld az elapsedTimeInMinutes függvényt, amely két paramétert kap: az első paraméter a lasagnéhoz adott rétegek száma, a második paraméter pedig az, hogy hány perce van a lasagne a sütőben. A függvény adja vissza, hány percet dolgoztál a lasagne elkészítésén, ami az előkészítési idő percekben mért értékének és a lasagne által eddig a sütőben eltöltött időnek az összege.
elapsedTimeInMinutes 3 20
--> 26
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Haskell nyelvet 107 feladat segítségével, valódi emberi mentorálással, mindez ingyen.