Programming ∀
Open in Telegram
Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.
Show more1 217
Subscribers
No data24 hours
-87 days
-3530 days
Posts Archive
1 217
+1
Lekin qanaqasiga 🤷
Coffe ko’pigi teng yarmini tashkil qilmaydiku😔
Yetkazib berilgan coffe ham umuman boshqa turdagi.
Mana haqiqiy exeption )))
Albatta cafeda zakaz ko’p bo’lgan va adashib qolgan. Ammo hechkim report qilmagan shekilli faqat man report qilganim uchun gap topolmay anashunday javob berishyabti.
Ichimliklar uchun ham aniq tiplar kerak deb doyim aytaman.
Lekin tog’ri tushuntirishga 5 baho. O’zim ham ishonay dedim operator gaplariga…
1 217
Pattern matching haqida reference:
Wiki: https://en.wikipedia.org/wiki/Pattern_matching
Adabeat: https://adabeat.com/fp/pattern-matching-in-functional-programming/
Rocks JVM: https://blog.rockthejvm.com/8-pm-tricks/
1 217
Savol kelibti
Pattern matching va ADT shular haqida ma'lumot bera olasizmi ?
Pattern matching bu jsdagi switch case mi 🤔?
Javob:
Pattern matching:
1. Hamma case statement value return qiladi. Bu degani qaysi casega match bo'lsa shu yerda return qilinadi. Match block expression statement emas.
def matchTest(x: Int): String = x match
case 1 => "one"
case 2 => "two"
case _ => "other"
matchTest(3) // returns other
matchTest(1) // returns one
2. Switch case primitiv tiplar va enumlarga ishlaydi. Pattern matching unaqa emas. Tuple, List yana boshqa turli tiplarga ishlayveradi(turli tillarda bazi farqlar borligi uchun o'zingiz yoqtirgan tildagi pattern matchingi ko'rishingiz mumkin). Turli murakkab tiplarga ham match ishlaydi. Quyida rust va scala misolida ko'rasiz.
let p = Point { x: 0, y: 7 };
match p {
Point { x, y: 0 } => println!("On the x axis at {x}"),
Point { x: 0, y } => println!("On the y axis at {y}"),
Point { x, y } => {
println!("On neither axis: ({x}, {y})");
}
}
val countingList = List(1,2,3,42)
val startsWithOne = countingList match {
case 1 :: someOtherElements => "This lists starts with one, the rest is $someOtherElements"
}
3. Compiler ishga aralashadi ! Matchda barcha possible caselar handle qilinmasa urishib beradi compiler sizni. Bu degani sizni safetyga majburlay oladi.
Pattern matchinning man bilgan manashunaqa farqlari bor. Pattern matching ichida parametric polymorphism ishlaydi va bu imperativ controlflowga asossangan if else va switchlardan anchagina kuchli narsa. Turli tillarda pattern matching qo'shimcha imkoniyatlari mavjud masalan scaladagi quyidagicha narsalar boshqa pattern matching bor tillarda bo'lmasligi mumkin.
count match {
case 1 => println("one, a lonely number")
case x if x == 2 || x == 3 => println("two's company, three's a crowd")
case x if x > 3 => println("4+, that's a party")
case _ => println("i'm guessing your number is zero or less")
}
ADT alohida yozaman !1 217
https://x.com/deedydas/status/1846366712616403366?s=46
Qanaqadir social networkda shunaqa contentlarni ko’rib qo’rqib qolishadida kegin FP haqida ham miflar boshlanadi.
Huddi maktabda arifmetika tugab Algebra darsi boshlanganda ko’pchilik potensial matematik o’quvchilarda ko’rsatkichlar tushib ketganiga o’xshataman shunaqa holatlarni.
1 217
Repost from JR TwitGram 🥂
Menimcha dasturlash haqiqiy “engineering” hisoblanishi uchun zo’r type system bo’lishi shart.
Hozir ko’pchilik dasturlarda “tahminan ko’p holatlarda ishlasa kerak” degan darajaga olib chiqilsa bo’ldi. Buzilib qolsa osmon uzilib yerga tushmaydi ko’p holatlarda.
Lekin bu haqiqiy engineering emas.
Siz yashab turgan uyni ham shunday qursa nima deb o’ylaysiz? “Aka, yashab turavering. Hudo hohlasa yaxshi bo’ladi. Tahminan qo’ldan kelgacha qurdik. Lekin 100% garantiya bera olmaymiz.” desa?
Shuning uchun ham bu narsalar haqiqiy engineeringa asoslanadi. Haqiqiy engineeringda qurilgan narsa ishlashiga isbot bor.
Dasturlashda esa yo’q. Shuning uchun ham dasturlash hozircha haqiqiy engineering emas.
Bu tarafga endi sekin sekin yuryapti.
Automated reasoning, verification, prop testing degan narsalar bor. Ular yordamida yozilgan kodni ishlashiga qaysidir darajada “garantiya” bersa bo’ladi.
Amazondagi men ishlayotgan jamoa ham Automated Reasoning bilan shug’ullanadi. Biz yozgan Cedar tili masalan shu tushunchalardan foydalanib yozilgan. Yani uni ishlashiga matematik isbotlar mavjud.
AI rivojlangan sari ham bu narsalarning muhimligi oshib boradi. AI yozgan kodlarni isbotlash uchun.
Type System ham qaysidir manoda shu isbotlarning bir qismi. Compiler kodingiz ishlashiga type systemdan foydalanib garantiya bera oladi.
1 217
Haqiqiy top kitob aynan distrubuted systems mavzusida.
Bundan kegin Alex xu biratni o'qimay qo'yasizlar.
https://www.distributed-systems.net/index.php/books/ds4/
1 217
Alexander Chichigin javob bergan. Man uchun uning javobi yetadi chunki bu kishi bu mavzularda ancha katta bilim tajribaga ega va community hurmatiga sazovor insonlardan.
https://www.quora.com/When-should-one-opt-to-use-AGDA-rather-than-Haskell
1 217
Haskelldan yaxshi tillar faqat Lean4 yoki Agda bo'lishi mumkin !
Qolganlari aniq ustun bo'lolmaydi.
Manashuni ohiriga yetkazib olsam kegin haskelldan yaxshiroq tillarda yozib ko'raman 🤓
1 217
Mezzami ?
Church numeralsni yozib ko'rdim 😎
Addition va type familyda Kei yordam berdi(Rahmat !)
https://en.wikipedia.org/wiki/Church_encoding#Church_numerals
1 217
Juda qiziq conversations topdim stackoverflowda:
Savol manosi va context: Monadlar qoidalari bo'yicha hammasini tadbiq qilish kerakmi ? Bu haskellda monadning 3 qoidasi haqida gapirilgan:
Javobda esa monadlar qonunlariga bo’ysunishni ta’minlash engineer qo’lida. Qonunlar buzulganida esa sizni aniq biror yoqimsiz holatlar kutyabti ))
Manashu narsa tufayli manga FP yoqadi. Qonunlarga amal qilish hayotingizni osonlashtiradi.
https://stackoverflow.com/questions/37124471/are-monad-laws-enforced-in-haskell
1 217
Har kuni kechga yengilgina biror meva yoki snekni ovolib mana bunaqa narsalar o'qish kerakda. Haskell weekly juda zo'r joy 😎
Sizlarni platformda shunday narsalar bormi ? Bo'lsa share qilinglar
PS: Nodejs yoki JS related bunaqa narsalarni bazilarini topgan edim ammo qiziq bo'lmagan.
https://haskellweekly.news/newsletter.html
