Umumiy ma'lumot - mavzu Amaliy dasturlash tizimlari Reja: Dasturlash tillari, ularning turlari va asoslari C++ dasturlash...

|
mavzu Amaliy dasturlash tizimlari Reja: Dasturlash tillari, ularning turlari va asoslari C++ dasturlash tili tahlili
|
bet | 12/17 | Sana | 20.07.2024 | Hajmi | 0,56 Mb. | | #268028 |
Bog'liq 2-biletUmumiy ma'lumot
"MONANDa m uchun m a turdagi qiymat a turdagi qiymatga kirishni bildiradi. MONANDa konteksti doirasida." —C. A. MakKen[6]
Aniqrog'i, MONANDdan qiymatga cheksiz kirish stsenariyga xos sabablarga ko'ra mos bo'lmagan hollarda qo'llanilishi mumkin. Balki MONANDasi bo'lsa, bu qiymat mavjud bo'lmasligi mumkin. IO MONAND holatida, bu qiymat hali noma'lum bo'lishi mumkinligi sababli, masalan, MONAND foydalanuvchi kiritishini bildirganda, u faqat so'rov ko'rsatilgandan keyin taqdim etiladi. Barcha holatlarda kirish mantiqiy bo'lgan stsenariylar MONAND uchun belgilangan bog'lash operatsiyasi orqali olinadi; Balki MONANDa uchun qiymat faqat mavjud bo'lsa, IO MONANDa uchun qiymat faqat ketma-ketlikda oldingi amallar bajarilgandan keyingina bog'lanadi.
MONANDa turdagi konstruktor M va ikkita amalni belgilash orqali yaratilishi mumkin:
return :: a -> M a (koʻpincha birlik deb ham ataladi), u a turdagi qiymatni oladi va uni bir qatorga oʻradi. MONANDik qiymat turdagi M a va
bind :: (M a) -> (a -> M b) -> (M b) (odatda >>= sifatida ifodalanadi), u turi boʻyicha f funksiyani qabul qiladi va MONAND qiymatlarni oʻzgartira oladi < /span>. qoʻllash, monodik qiymatni qaytarish ni oʻralmagan qiymatga aM afaM b
(Muqobil, lekin ekvivalent konstruksiya join funksiyasidan foydalangan holda =4> operatorini keyingi bo'limda topish mumkin § Funktorlardan hosila.) bind
Ushbu elementlar yordamida dasturchi bir nechta bog‘lash operatorlari bilan bir-biriga zanjirlangan funksiya chaqiruvlari ketma-ketligini ("quvur") tuzadi. ifoda. Har bir funktsiya qo'ng'irog'i o'zining kirish qiymatini o'zgartiradi va bog'lash operatori ketma-ketlikning keyingi bosqichiga o'tkaziladigan qaytarilgan MONAND qiymatni boshqaradi.
Odatda, bogʻlash operatori >>= parametr sifatida qabul qilingan funksiyada mavjud boʻlmagan qoʻshimcha hisoblash bosqichlarini bajaradigan MONANDga xos kodni oʻz ichiga olishi mumkin. Har bir tuzilgan funksiya qoʻngʻiroqlari oʻrtasida bogʻlash operatori m a funksiya ichida mavjud boʻlmagan baʼzi qoʻshimcha maʼlumotlarni monodik qiymatga kiritishi va uni oʻtkazishi mumkin. quvur liniyasidan pastga. U, shuningdek, bajarilish oqimini aniqroq boshqarishi mumkin, masalan, funktsiyani faqat ba'zi sharoitlarda chaqirish yoki funktsiya chaqiruvlarini ma'lum bir tartibda bajarish.
Shuningdek qarang: MONAND (toifalar nazariyasi) § The maybe MONAND
MONANDaning bir misoli Maybe turidir. Noma'lum null natijalar - bu null ob'ekt naqshidan foydalanishni talab qiladigan ko'plab protsessual tillar bilan ishlash uchun maxsus vositalarni taqdim etmaydigan o'ziga xos og'riqli nuqtadir. aniqlanmagan qiymatlarni qayta ishlash uchun har bir operatsiyada noto'g'ri qiymatlarni tekshirish uchun tekshiradi. Bu xatoliklarni keltirib chiqaradi va xatolarni nozik tarzda boshqaradigan mustahkam dasturiy ta'minotni yaratishni qiyinlashtiradi. Maybe turi dasturchini natijaning ikkita holatini aniq belgilash orqali ushbu potentsial aniqlanmagan natijalar bilan ishlashga majbur qiladi: Just ⌑result⌑ yoki Nothing. Misol uchun, dasturchi oraliq natijani qaytarish uchun tahlil qiluvchini qurishi mumkin yoki boshqa tahlilchi aniqlagan va qaysi dasturchi ishlashi kerak bo'lgan shartni bildiradi. Bu Maybe turi to‘liq funksiyali MONANDaga aylanadi
Ko'pgina tillarda "Balki" MONANDasi variant turi sifatida ham tanilgan, bu faqat o'z ichiga oladi yoki yo'qligini belgilaydigan tur. qiymat. Odatda ular qandaydir sonli tur sifatida ifodalanadi. Bu Rust misolida biz uni Maybe deb ataymiz va bu turdagi variantlar qiymati boʻlishi mumkin. umumiy tur T yoki boʻsh variant: Nothing.
|
| |