1-topshiriq Fan:”Dasturlash uslublari va paradigmalar” Mavzu: Haskel funksional dasturlash tili va uning imkoniyalari


Download 45.23 Kb.
bet3/3
Sana20.01.2023
Hajmi45.23 Kb.
#1103426
1   2   3
Bog'liq
haskell

Xususiyatlari


Haskell xususiyatlari dangasa baho, lambda ifodalari, naqshlarni moslashtirish, ro'yxatni tushunish, sinflar va polimorfizm turi. Bu sof funktsional til, demak, funktsiyalar umuman yo'q yon effektlar. Yon ta'sirlarni ifodalash uchun aniq konstruktsiya mavjud, ortogonal funktsiyalar turiga. Sof funktsiya keyinchalik bajariladigan yon ta'sirni qaytarishi mumkin, va uni modellashtirish nopok funktsiyalar boshqa tillardan.
Haskellda a kuchli, statik asoslangan tizim turi Xindli-Milner turidagi xulosa. Uning bu sohadagi asosiy yangiligi dastlab qo'shishning printsipial usuli sifatida ishlab chiqilgan tip sinflaridir ortiqcha yuk tilga, ammo undan ko'p foydalanishni topgandan beri.
Yon ta'sirlarni ifodalovchi konstruktsiya a ga misoldir monad. Monadalar - bu har xil hisoblash usullarini modellashtiradigan, shu jumladan xatolar bilan ishlashni, noaniqlik, tahlil qilish va dasturiy tranzaksiya xotirasi. Monadalar oddiy ma'lumotlar turlari deb ta'riflanadi, ammo Haskell ba'zi turlarini taqdim etadi sintaktik shakar ulardan foydalanish uchun.
Haskell ochiq, nashr etilgan spetsifikatsiyaga ega, va bir nechta dastur mavjud. Uning asosiy qo'llanilishi, Glasgow Haskell kompilyatori (GHC), ikkalasi ham tarjimon va mahalliy kod kompilyator aksariyat platformalarda ishlaydi. GHC o'zining so'nggi turdagi yangiliklarini o'z ichiga olgan boy turi bilan ajralib turadi ma'lumotlarning umumlashtirilgan algebraik turlari va tipdagi oilalar. Kompyuter tilidagi etalonlar o'yini ning yuqori samaradorlik bilan amalga oshirilishini ham ta'kidlaydi bir vaqtda va parallellik.
Til atrofida faol va o'sib boruvchi hamjamiyat mavjud bo'lib, 5400 dan ortiq uchinchi tomon ochiq manbali kutubxonalar va vositalar onlayn paketlar omborida mavjud. Hackage.

Kod misollari


Shuningdek qarang: Haskell xususiyatlari § misollar
A "Salom Dunyo!" dastur Haskell-da (faqat oxirgi satr juda zarur):
modul Asosiy (asosiy) qayerda - tarjimonga kerak emas, modul faylida sukut bo'yichaasosiy :: IO () - kompilyator ushbu turdagi ta'rifni chiqarishi mumkinasosiy = putStrLn "Salom Dunyo!"
The faktorial Haskell-dagi funktsiya, bir necha xil usul bilan aniqlangan:
- Izohlarni yozing (ixtiyoriy, har bir dastur uchun bir xil)faktorial :: (Ajralmas a) => a -> a- Rekursiyadan foydalanish ("ifthenelse" ifodasi bilan)faktorial n = agar n < 2 keyin 1 boshqa n * faktorial (n - 1)- Rekursiyadan foydalanish (namunalarni moslashtirish bilan)faktorial 0 = 1faktorial n = n * faktorial (n - 1)- Rekursiyadan foydalanish (soqchilar bilan)faktorial n | n < 2 = 1 | aks holda = n * faktorial (n - 1)- Ro'yxat va "mahsulot" funktsiyasidan foydalanishfaktorial n = mahsulot [1..n]- katlamdan foydalanish ("mahsulot" ni amalga oshiradi)faktorial n = katlama (*) 1 [1..n]- nuqtasiz uslubfaktorial = katlama (*) 1 . enumFromTo 1
Sifatida Butun son turi bor o'zboshimchalik bilan aniqlik, ushbu kod kabi qiymatlarni hisoblab chiqadi faktorial 100000 (456,574 xonali raqam), aniqlikni yo'qotmasdan.
Ga o'xshash algoritmni amalga oshirish tezkor tartib birinchi element burilish sifatida qabul qilingan ro'yxatlar orqali:
- Izohlarni yozing (ixtiyoriy, har bir dastur uchun bir xil)tezkor :: Ord a => [a] -> [a]- ro'yxatni tushunishdan foydalanishtezkor [] = [] - Bo'sh ro'yxat allaqachon tartiblangantezkor (x:xs) = tezkor [a | a <- xs, a < x] - Ro'yxatning chap qismini saralash ++ [x] ++ - Ikkala tartiblangan qism orasiga burama joyni joylashtiring tezkor [a | a <- xs, a >= x] - Ro'yxatning o'ng qismini saralash- Filtrdan foydalanishtezkor [] = []tezkor (x:xs) = tezkor (filtr (=x) xs)
Download 45.23 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling