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)