🗊Презентация Монадалар

Нажмите для полного просмотра!
Монадалар, слайд №1Монадалар, слайд №2Монадалар, слайд №3Монадалар, слайд №4Монадалар, слайд №5Монадалар, слайд №6Монадалар, слайд №7Монадалар, слайд №8Монадалар, слайд №9Монадалар, слайд №10Монадалар, слайд №11

Вы можете ознакомиться и скачать презентацию на тему Монадалар. Доклад-сообщение содержит 11 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Монадалар
Описание слайда:
Монадалар

Слайд 2





Функционалды бағдарламалауда жаңадан бастаушылар Haskell’ дегі монада түсінігін түсіне бермейді. Алайда монадалар тілде жиі кездеседі, мысалы енгізу\шығару жүйесі монада түсінігіне негізделген. Ал стандартты кітапханаларда монадаларға арналған бүтін бір модульдар бар. Монада түсінігі Haskell де категориялар теориясына негізделгенін айтып өткен жөн , алайда абстракциялы математикаға кіріспеу үшін монадалардың интуитивті түсінігі келтіріледі.
Функционалды бағдарламалауда жаңадан бастаушылар Haskell’ дегі монада түсінігін түсіне бермейді. Алайда монадалар тілде жиі кездеседі, мысалы енгізу\шығару жүйесі монада түсінігіне негізделген. Ал стандартты кітапханаларда монадаларға арналған бүтін бір модульдар бар. Монада түсінігі Haskell де категориялар теориясына негізделгенін айтып өткен жөн , алайда абстракциялы математикаға кіріспеу үшін монадалардың интуитивті түсінігі келтіріледі.
Монадалар келесі монадалық кластардың түрлеріне жататын типтер болып табылады: Functor, Monad и MonadPlus. Бұл кластардың бірі де басқа класқа тегі бола ламайды себебі монадалық кластар мұраға қалдырылмайды.
Описание слайда:
Функционалды бағдарламалауда жаңадан бастаушылар Haskell’ дегі монада түсінігін түсіне бермейді. Алайда монадалар тілде жиі кездеседі, мысалы енгізу\шығару жүйесі монада түсінігіне негізделген. Ал стандартты кітапханаларда монадаларға арналған бүтін бір модульдар бар. Монада түсінігі Haskell де категориялар теориясына негізделгенін айтып өткен жөн , алайда абстракциялы математикаға кіріспеу үшін монадалардың интуитивті түсінігі келтіріледі. Функционалды бағдарламалауда жаңадан бастаушылар Haskell’ дегі монада түсінігін түсіне бермейді. Алайда монадалар тілде жиі кездеседі, мысалы енгізу\шығару жүйесі монада түсінігіне негізделген. Ал стандартты кітапханаларда монадаларға арналған бүтін бір модульдар бар. Монада түсінігі Haskell де категориялар теориясына негізделгенін айтып өткен жөн , алайда абстракциялы математикаға кіріспеу үшін монадалардың интуитивті түсінігі келтіріледі. Монадалар келесі монадалық кластардың түрлеріне жататын типтер болып табылады: Functor, Monad и MonadPlus. Бұл кластардың бірі де басқа класқа тегі бола ламайды себебі монадалық кластар мұраға қалдырылмайды.

Слайд 3





Prelude модулінде үш монада анықталған: IO, [] және Maybe, яғни тізім де монада болып табылады.
Prelude модулінде үш монада анықталған: IO, [] және Maybe, яғни тізім де монада болып табылады.
Монада математикалық түрде монадаға орындалатын операцияларды байланыстырып тұрған ережелер жиынтығымен анықталады. Бұл ережелер монаданы қалай қолдану керектінің және оның ішкі құрылымы туралы түсінік береді. Нақтырақ түсіну үшін ары қарай екі базалық операциясы және бір функциясы анықталған Monadа класы қарастырылады:
class Monad m where 
(>>=) :: m a -> (a -> m b) -> m b 
(>>) :: m a -> m b -> m b 
return :: a -> m a 
fail :: String -> m a 
m >> k = m >>= \_ -> k
Описание слайда:
Prelude модулінде үш монада анықталған: IO, [] және Maybe, яғни тізім де монада болып табылады. Prelude модулінде үш монада анықталған: IO, [] және Maybe, яғни тізім де монада болып табылады. Монада математикалық түрде монадаға орындалатын операцияларды байланыстырып тұрған ережелер жиынтығымен анықталады. Бұл ережелер монаданы қалай қолдану керектінің және оның ішкі құрылымы туралы түсінік береді. Нақтырақ түсіну үшін ары қарай екі базалық операциясы және бір функциясы анықталған Monadа класы қарастырылады: class Monad m where (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b return :: a -> m a fail :: String -> m a m >> k = m >>= \_ -> k

Слайд 4





Екі операциялар (>>=) және (>>) — бұл байланыстыру операциялары. Олар екі монадалық мәнді біріктіреді ал  return  функциясы а типті берілген мәнді  m a типті монадалық мәнге ауыстырады.  Сигнатуралық операциялар (>>) байланыстыру операцияларын түсінуге көмектемеді:  (m a >>= \v → m b) түсінігі а типті нысанды  v типті функциямен біріктіріп m b  типтерінің нәтижесін қайтаратын m a монадалық мәнін біріктіреді. Нәтижесі  m b типті монадалық мән болады.  (>>)  операциясы бірінші монадалық операндтан алынған мәнді функция қолданбаған жағдайда қолданылады. Байланыстыру операциясының нақты мәні әрине монаданы нақты іске асыруға тәуелді
Екі операциялар (>>=) және (>>) — бұл байланыстыру операциялары. Олар екі монадалық мәнді біріктіреді ал  return  функциясы а типті берілген мәнді  m a типті монадалық мәнге ауыстырады.  Сигнатуралық операциялар (>>) байланыстыру операцияларын түсінуге көмектемеді:  (m a >>= \v → m b) түсінігі а типті нысанды  v типті функциямен біріктіріп m b  типтерінің нәтижесін қайтаратын m a монадалық мәнін біріктіреді. Нәтижесі  m b типті монадалық мән болады.  (>>)  операциясы бірінші монадалық операндтан алынған мәнді функция қолданбаған жағдайда қолданылады. Байланыстыру операциясының нақты мәні әрине монаданы нақты іске асыруға тәуелді
Описание слайда:
Екі операциялар (>>=) және (>>) — бұл байланыстыру операциялары. Олар екі монадалық мәнді біріктіреді ал return функциясы а типті берілген мәнді m a типті монадалық мәнге ауыстырады. Сигнатуралық операциялар (>>) байланыстыру операцияларын түсінуге көмектемеді: (m a >>= \v → m b) түсінігі а типті нысанды v типті функциямен біріктіріп m b типтерінің нәтижесін қайтаратын m a монадалық мәнін біріктіреді. Нәтижесі m b типті монадалық мән болады. (>>) операциясы бірінші монадалық операндтан алынған мәнді функция қолданбаған жағдайда қолданылады. Байланыстыру операциясының нақты мәні әрине монаданы нақты іске асыруға тәуелді Екі операциялар (>>=) және (>>) — бұл байланыстыру операциялары. Олар екі монадалық мәнді біріктіреді ал return функциясы а типті берілген мәнді m a типті монадалық мәнге ауыстырады. Сигнатуралық операциялар (>>) байланыстыру операцияларын түсінуге көмектемеді: (m a >>= \v → m b) түсінігі а типті нысанды v типті функциямен біріктіріп m b типтерінің нәтижесін қайтаратын m a монадалық мәнін біріктіреді. Нәтижесі m b типті монадалық мән болады. (>>) операциясы бірінші монадалық операндтан алынған мәнді функция қолданбаған жағдайда қолданылады. Байланыстыру операциясының нақты мәні әрине монаданы нақты іске асыруға тәуелді

Слайд 5





Мысалы, IO типі (>>=) операциясын оның екі операндының тізбектеле орындалғаны, яғни орындалған бірінші операнданың мәні екіншісіне берілуі ретінде қарастырылады. Басқа қосымша екі монадалық типтерге  (тізімдер және Maybe) бұл операция нөлдің берілгені ретінде немесе одан көп параметрлерді есептеу процесінен келесіге беру ретінде анықталады.
Мысалы, IO типі (>>=) операциясын оның екі операндының тізбектеле орындалғаны, яғни орындалған бірінші операнданың мәні екіншісіне берілуі ретінде қарастырылады. Басқа қосымша екі монадалық типтерге  (тізімдер және Maybe) бұл операция нөлдің берілгені ретінде немесе одан көп параметрлерді есептеу процесінен келесіге беру ретінде анықталады.
Haskell’де тіл деңгейінде монаданы қолдануды қолдайтын арнайы қызметші сөз болады. Бұл do сөзі оның түсінігін мына қодану ережелерінен көруге болады: 
do e1 ; e2 = e1 >> e2 
do p <- e1 ; e2 = e1 >>= \p -> e2
Описание слайда:
Мысалы, IO типі (>>=) операциясын оның екі операндының тізбектеле орындалғаны, яғни орындалған бірінші операнданың мәні екіншісіне берілуі ретінде қарастырылады. Басқа қосымша екі монадалық типтерге (тізімдер және Maybe) бұл операция нөлдің берілгені ретінде немесе одан көп параметрлерді есептеу процесінен келесіге беру ретінде анықталады. Мысалы, IO типі (>>=) операциясын оның екі операндының тізбектеле орындалғаны, яғни орындалған бірінші операнданың мәні екіншісіне берілуі ретінде қарастырылады. Басқа қосымша екі монадалық типтерге (тізімдер және Maybe) бұл операция нөлдің берілгені ретінде немесе одан көп параметрлерді есептеу процесінен келесіге беру ретінде анықталады. Haskell’де тіл деңгейінде монаданы қолдануды қолдайтын арнайы қызметші сөз болады. Бұл do сөзі оның түсінігін мына қодану ережелерінен көруге болады: do e1 ; e2 = e1 >> e2 do p <- e1 ; e2 = e1 >>= \p -> e2

Слайд 6





Біріншісі әрқашан орныдалады (бірінші операндадан екіншісіне ауыстыру жасалмайды). Екіншісінде қате кетуі мүмкін, ол жағдайда Monadа класында анықталған fail функциясы шақырылады.Сондықтан do сөзінің нақтырақ анықтамасы былай жазылады: 
Біріншісі әрқашан орныдалады (бірінші операндадан екіншісіне ауыстыру жасалмайды). Екіншісінде қате кетуі мүмкін, ол жағдайда Monadа класында анықталған fail функциясы шақырылады.Сондықтан do сөзінің нақтырақ анықтамасы былай жазылады: 
do p <- e1 ; e2 = e1 >>= (\v -> case v of 
p -> e2 
_ -> fail ”s”)
s — бұл жол, ол do операторының бағдарламада орналасуын анықтай алады, немесе біршама семантикалық жүктемені алуы мүмкін. Мысалы, IO монадасында  (‘a’ ← getChar) әрекеті fail функциясын тек оқылған символ ‘a’ символы болмаған жағдайда ғана шақырады.
Описание слайда:
Біріншісі әрқашан орныдалады (бірінші операндадан екіншісіне ауыстыру жасалмайды). Екіншісінде қате кетуі мүмкін, ол жағдайда Monadа класында анықталған fail функциясы шақырылады.Сондықтан do сөзінің нақтырақ анықтамасы былай жазылады: Біріншісі әрқашан орныдалады (бірінші операндадан екіншісіне ауыстыру жасалмайды). Екіншісінде қате кетуі мүмкін, ол жағдайда Monadа класында анықталған fail функциясы шақырылады.Сондықтан do сөзінің нақтырақ анықтамасы былай жазылады: do p <- e1 ; e2 = e1 >>= (\v -> case v of p -> e2 _ -> fail ”s”) s — бұл жол, ол do операторының бағдарламада орналасуын анықтай алады, немесе біршама семантикалық жүктемені алуы мүмкін. Мысалы, IO монадасында (‘a’ ← getChar) әрекеті fail функциясын тек оқылған символ ‘a’ символы болмаған жағдайда ғана шақырады.

Слайд 7





Бұл әрекет бағдарламаның орындалуын үзеді, себебі IO монадасында fail функциясы өз кезегінде error жүйелік функциясын шақырады. 
Бұл әрекет бағдарламаның орындалуын үзеді, себебі IO монадасында fail функциясы өз кезегінде error жүйелік функциясын шақырады. 
MonadPlus класы нөлдік элементі бар және «+» операциясы бар монадалар үшін қолданылады. Бұл кластың анықтамасы келесідей: 
class (Monad m) => MonadPlus m where 
mzero :: m a 
mplus :: m a -> m a -> m a
Бұл монадалар класындағы нөлдік элемен келесі ережелерге бағынады: 
m >>= \x -> mzero = mzero 
mzero >>= m = mzero
Описание слайда:
Бұл әрекет бағдарламаның орындалуын үзеді, себебі IO монадасында fail функциясы өз кезегінде error жүйелік функциясын шақырады. Бұл әрекет бағдарламаның орындалуын үзеді, себебі IO монадасында fail функциясы өз кезегінде error жүйелік функциясын шақырады. MonadPlus класы нөлдік элементі бар және «+» операциясы бар монадалар үшін қолданылады. Бұл кластың анықтамасы келесідей: class (Monad m) => MonadPlus m where mzero :: m a mplus :: m a -> m a -> m a Бұл монадалар класындағы нөлдік элемен келесі ережелерге бағынады: m >>= \x -> mzero = mzero mzero >>= m = mzero

Слайд 8





Мысалы, тізімдер үшін нөлдік элемент болып [] бос тізім, ал «+» операциясына — тізімдер конкатенациясы. Сондықтан тізімдер монадасы MonadPlus класының түрі болып табылады. Басқа жағынан қарағанда IO монадасында нөлдік элемент жоқ, сондықтан ІО монадасы тек Monad класына жатады.
Мысалы, тізімдер үшін нөлдік элемент болып [] бос тізім, ал «+» операциясына — тізімдер конкатенациясы. Сондықтан тізімдер монадасы MonadPlus класының түрі болып табылады. Басқа жағынан қарағанда IO монадасында нөлдік элемент жоқ, сондықтан ІО монадасы тек Monad класына жатады.
Қосымша монадалар 
Алынған ақпараттарды нақтылау үшін қарапайымдау етіп қарастыру керек. Тізімдер монада болып табылатындықтан және сол тізімдер жан жақты қарастырылғандықтан олардың мысалында монадалардың іс жүзінде қолданылуын көруге болады.
Описание слайда:
Мысалы, тізімдер үшін нөлдік элемент болып [] бос тізім, ал «+» операциясына — тізімдер конкатенациясы. Сондықтан тізімдер монадасы MonadPlus класының түрі болып табылады. Басқа жағынан қарағанда IO монадасында нөлдік элемент жоқ, сондықтан ІО монадасы тек Monad класына жатады. Мысалы, тізімдер үшін нөлдік элемент болып [] бос тізім, ал «+» операциясына — тізімдер конкатенациясы. Сондықтан тізімдер монадасы MonadPlus класының түрі болып табылады. Басқа жағынан қарағанда IO монадасында нөлдік элемент жоқ, сондықтан ІО монадасы тек Monad класына жатады. Қосымша монадалар Алынған ақпараттарды нақтылау үшін қарапайымдау етіп қарастыру керек. Тізімдер монада болып табылатындықтан және сол тізімдер жан жақты қарастырылғандықтан олардың мысалында монадалардың іс жүзінде қолданылуын көруге болады.

Слайд 9





------Тізімдер үшін байланыстыру операциясы тізімнің әр элементі үшін орындалатын операциялар жинағы ретінде қарастырылады.Тізімдермен бірге қолданылатын (>>=) операциясының сигнатурасы келесі түрге келеді: 
------Тізімдер үшін байланыстыру операциясы тізімнің әр элементі үшін орындалатын операциялар жинағы ретінде қарастырылады.Тізімдермен бірге қолданылатын (>>=) операциясының сигнатурасы келесі түрге келеді: 
(>>=) :: [a] -> (a -> [b]) -> [b]
Бұл а типті мәні бар тізім және а типті мәнді b типті мәнге келтіретін функция берілгенін білдіреді. Байланыстыру а типті мәні бар тізімнің әр элементке функцияны қолданып, b типті мән тізіміне қайтарады. Бұл операция бізге белгілі — тізімдерді анықтаушылар дәл осы жолмен анықтайды. Яғни келесі үш өрнек  бірдей болады:
Описание слайда:
------Тізімдер үшін байланыстыру операциясы тізімнің әр элементі үшін орындалатын операциялар жинағы ретінде қарастырылады.Тізімдермен бірге қолданылатын (>>=) операциясының сигнатурасы келесі түрге келеді: ------Тізімдер үшін байланыстыру операциясы тізімнің әр элементі үшін орындалатын операциялар жинағы ретінде қарастырылады.Тізімдермен бірге қолданылатын (>>=) операциясының сигнатурасы келесі түрге келеді: (>>=) :: [a] -> (a -> [b]) -> [b] Бұл а типті мәні бар тізім және а типті мәнді b типті мәнге келтіретін функция берілгенін білдіреді. Байланыстыру а типті мәні бар тізімнің әр элементке функцияны қолданып, b типті мән тізіміне қайтарады. Бұл операция бізге белгілі — тізімдерді анықтаушылар дәл осы жолмен анықтайды. Яғни келесі үш өрнек бірдей болады:

Слайд 10





Prelude>:set +t
Prelude>:set +t
Prelude>1
1 :: Integer
Prelude>1.2
1.2 :: Double
Prelude>’a’
’a’ :: Char
Prelude>True
True :: Bool
Описание слайда:
Prelude>:set +t Prelude>:set +t Prelude>1 1 :: Integer Prelude>1.2 1.2 :: Double Prelude>’a’ ’a’ :: Char Prelude>True True :: Bool

Слайд 11






-- Өрнек 1 -------------------------------
[(x, y) | x <- [1, 2, 3], y <- [1, 2, 3], x /= y] 
-- Өрнек 2-------------------------------------
do x <- [1, 2, 3] 
y <- [1, 2, 3] 
True <- return (x /= y) 
return (x, y) 
-- Өрнек 3-------------------------------------
[1, 2, 3] >>= (\x -> [1, 2, 3] >>= (\y -> return (x /= y) >>= 
(\r -> case r of 
True -> return (x, y) 
_ -> fail ””))) 
Қай өрнекті қолдануды бағдарламалаушы шешеді.
Описание слайда:
-- Өрнек 1 ------------------------------- [(x, y) | x <- [1, 2, 3], y <- [1, 2, 3], x /= y] -- Өрнек 2------------------------------------- do x <- [1, 2, 3] y <- [1, 2, 3] True <- return (x /= y) return (x, y) -- Өрнек 3------------------------------------- [1, 2, 3] >>= (\x -> [1, 2, 3] >>= (\y -> return (x /= y) >>= (\r -> case r of True -> return (x, y) _ -> fail ””))) Қай өрнекті қолдануды бағдарламалаушы шешеді.



Похожие презентации
Mypresentation.ru
Загрузить презентацию