Haskell: Maybe
Rust: Option
Bu abstraksiyalar bizga optional valuelar bilan ishlagani kerak, imperativ tillarda aytganda nullable valuelar bilan. Ammo bilamizki imperativ tillarda null hamma joyda osilib yuradi, niz nullable valueni olib yana boshqa funksiyaga bervorishingiz mumkin vaxakazo hullas hamma joyda null tekshirish potensiali mavjud.
Immutable tilda ishlar ekansiz imperativ tillardagi odatlarni sekin chetga surish kerak. Optional narsalarni eng boshidan hal etish kerak. Bo'lmasa o'zingizni Option tipni ham qurib o'tirasiz.
Bu draft PRda aynan shu muammoni yechimini ko'rsak bo'ladi: https://github.com/bleur-org/bleur/pull/17/changes
Ammo muammo bundanda kengroq ekan, Biz
Configuration degan tipda Empty degan varianti olib tashladik va endi bizda Configuration tipida empty case yo'q. Lekin muammo shundaki uning Template yoki Collection tiplariga kerakli valuelar Collection tipi construct bo'lish vaqtida bo'lmasligi mumkin. Manashu sababli konstruksiyalar yanayam teparoqdan refactor qilinishi kerak, PRda aynan
todo qolib ketgan. PR o'ziga etibor bersangiz birgina empty case sababli qancha code kerakmas bo'lib qoldi. Shu sababli ham bunday holatlarda o'zingizni custom empty caseni qurmaslik kerak. Eng boshidan aniq ajratib olish kerak hammasini shunda ortiqcha code bo'lmaydi, ortiqcha
unwrap ham bo'lmaydi. Vaqtim bemalol bo'lganida PR yakunlab qo'yaman va natijani ulashaman.Maxsus empty caselar bazida bo'lishi mumkini ammo bu boshqa mavzu bizni contextga umuman aloqador emas.
Manashu ham misol bo'ladiki biz language feauturelardan foydalanishni o'rganishimiz kerakligiga. Albatta hammasini sekin sekin o'rganamiz.