Hogyan kell kenyeret sütni programozók Haskell programozási jegyzetek

Tehát üljön be egy programozó Haskell. Itt célszerű a menedzser, és azt mondta, azt mondják, meg kell tanulni, hogy kenyeret sütni. Általában semmi igazán nem világos, de időre van szükségünk, ezért szükséges, hogy:

adatok kenyér = kenyér

Később kiderült, hogy a kenyér, kiderül, hogy kell kemencében sült:

adatok sütő = sütő
adatok kenyér = kenyér

createBread. Sütő -> Kenyér
createBread _ = kenyér

Mint látható, mindaddig, amíg ez egy kicsit, hogy az érintett. Amint az a tény, hogy a kemence lehet a különböző típusok:

adatok Sütő = ElectricOven | GasOven | mikrohullámú sütő
adatok kenyér = kenyér

createBread. Sütő -> Kenyér
createBread _ = kenyér

Az első valóban többé-kevésbé érdekes feltétel az, hogy a gázsütő nem sült gáz nélkül:

adatok GasStatus = GasAvailable | GasUnavailable
adatok Sütő = ElectricOven | GasOven | mikrohullámú sütő
adatok kenyér = kenyér

breadCouldBeCreated GasOven GasUnavailable = False
breadCouldBeCreated _ _ = True

createBread sütő gáz
| breadCouldBeCreated sütő gáz = Csak kenyér
| különben = Semmi

típusú „gáz állapot” beállítását. Gáz - ez vagy van, vagy nem. Ha az általunk használt gázpalackokat, akkor tárolja a rendelkezésre álló gáz liter, a lényeg ugyanaz marad. breadCouldBeCreated funkció ellenőrzi, ha tudjuk főzni valamit a jelenlegi körülmények között (gáz jelenlétét és kemence típus).

Később kiderült, hogy amellett, hogy a kenyeret a sütőbe, és lehet főzni torták és sütemények, különböző tömések:

adatok Töltelék = Hús | káposzta
adatok Food = Cake | kenyér | pépes töltelék
adatok GasStatus = GasAvailable | GasUnavailable
adatok Sütő = ElectricOven | GasOven | mikrohullámú sütő

ovenCouldBeUsed GasOven GasUnavailable = False
ovenCouldBeUsed _ _ = True

hozzon létre az élelmiszer-sütő gáz
| ovenCouldBeUsed sütő gáz = Just élelmiszer
| különben = Semmi

Bemutatjuk a fajta „élelmiszer” és a „töltelék”. BreadCouldBeCreated átnevezés funkció ovenCouldBeUsed.

Most, a menedzser azt akarja, hogy süteményeket és kenyeret sütött egy olyan indok, és a különböző recepteket. Said - elkészült:

adatok Töltelék = Hús | káposzta
adatok Food = Cake | kenyér | pépes töltelék
adatok GasStatus = GasAvailable | GasUnavailable
adatok Sütő = ElectricOven | GasOven | mikrohullámú sütő

ovenCouldBeUsed GasOven GasUnavailable = False
ovenCouldBeUsed _ _ = True

hozzon létre az élelmiszer-sütő gáz
| ovenCouldBeUsed sütő gáz = Just élelmiszer
| különben = Semmi

breadRecipe = létre kenyér
cakeRecipe = létre Cake
pastyRecipe töltelék = létrehozni $ pépes tölteléket

Recept általában megköveteli a végrehajtás egyes cselekvés összetevők sütő, és így tovább. Nyilvánvaló, hogy a recept egy magasabb rendű függvény.

Végül, a sütők szükséges sütni tégla. Ítélve a megfogalmazás, sütni tégla kell az ugyanabban a kemencében, beleértve a mikrohullámú sütőt (bár egy külön osztályt kemence bevezetésre kerül a cikket ügyéről):

adatok Töltelék = Hús | káposzta
adatok Food = Cake | kenyér | pépes töltelék
adatok GasStatus = GasAvailable | GasUnavailable
adatok Sütő = ElectricOven | GasOven | mikrohullámú sütő
adatok tégla = tégla

ovenCouldBeUsed GasOven GasUnavailable = False
ovenCouldBeUsed _ _ = True

hozzon létre az élelmiszer-sütő gáz
| ovenCouldBeUsed sütő gáz = Just élelmiszer
| különben = Semmi

breadRecipe = létre kenyér
cakeRecipe = létre Cake
pastyRecipe töltelék = létrehozni $ pépes tölteléket

makeBrick sütő gáz
| ovenCouldBeUsed sütő gáz = Csak tégla
| különben = Semmi

Mi csak hozzá egyfajta „tégla” és a funkció „téglát”.

A következtetések maguktól adódnak. Kapunk egy egyszerű megérteni, és könnyen karbantartható kódot. A folyamat során az írás, akkor könnyen és természetesen épít a domain modell valójában csak így a fordítás oroszról Haskell. Anélkül, hogy az öröklés, újratervezés és UML.

Talán, sőt, azt jelentette, hogy minden kemence termel kenyér és sütemények egy kicsit más, és meg kell, hogy egy további osztály típusú (vagy ha úgy tetszik, a „felület”) a megfelelő esetben az osztály. Ugyanakkor nem kell kézzel kódolni a hívás ovenCouldBeUsed bárhol sütőben használható. De ez nem látszik, hogy a határozat jelentősen bonyolítja ezt az egészet.

És hogyan kenyeret sütni?

Mint a bejegyzést? Oszd meg másokkal:

(Meg kell adni JS)

Kapcsolódó cikkek