More Related Content
Similar to Monad tutorial (20)
More from Hideyuki Tanaka (7)
Monad tutorial
- 2. èªå·±çŽ¹ä»
⢠ç°äžè±è¡ (@tanakh, id:tanakh)
â¢ æ ªåŒäŒç€Ÿ Preferred Infrastructure (PFI) å€å
â æ€çŽ¢ãšã³ãžã³ã®ãã«ãŽãªãºã ãšãäœã£ãŠãŸã
⢠Haskell (2004ïœ)
⢠C++ (1998ïœ)
⢠BASIC (1992ïœ)
⢠ããã°ã©ãã³ã°ã³ã³ãã¹ãæ奜家
â ICPC, ICFPC, CodeJam, TopCoder, âŠ
- 17. æå³çåŽé¢ããã®
ã¢ããã®ã¡ã¿ãããŒ
⢠ã¢ããã¯ãããã°ã©ããã«ã»ãã³ãã³ã
ã§ãã
- 23. ã»ãã³ãã³ããããããšã«ãã
å¯èœã«ãªãããš
⢠æ®éã®ããã°ã©ã ãé決å®èšç®ã«å€ãã
⢠æ®éã®ããã°ã©ã ã«ãšã©ãŒãã³ããªã³ã°
ã(ããã°ã©ã ãæžãæããã«)è¿œå ãã
⢠æ®éã®ããã°ã©ã ã«æé»ã®ç¶æ
ãå°å
¥ã
ã
- 24. ã³ã³ãã¯ã¹ã
⢠å
·äœçãªã¢ããã«å¯ŸããŠããããèšç®ã«
ä»å 䟡å€ãäžããŸãããããïŒèšç®ã®ïŒ
ã³ã³ãã¯ã¹ããšåŒã¶ããšã«ããŸã
â ã€ãŸããã¢ãããšããã®ã¯ã³ã³ãã¯ã¹ãä»ã
ã®èšç®ãšããããšãã§ãã
⢠äŸãã°âŠ
â monad:ãªã¹ãã¢ãã â ctx:é決å®æ§
â monad:Stateã¢ãã â ctx:mutableãªç¶æ
â etc âŠ
- 29. äŸ
⢠N-ã¯ããŒã³åé¡
â Int ãäžããããŠè§£ãè¿ã
â 解ãšã¯ãªãããïŒ
⢠å
šè§£åæ
⢠ã©ããäžã€ãèŠã€ãã
⢠äžçªãã解ãé Œã
â ããããèããã
- 31. ååãŸãšã
⢠ã¢ãããšã¯äœãªã®ãïŒ
â èšç®ã³ã³ãã¯ã¹ãã®æœè±¡åã§ãã
⢠ãªãã§ãããå¬ããã®ïŒ
â å
·äœçãªã³ã³ãã¯ã¹ãã«äŸåããªãã³ãŒãã
æžãã
â æœè±¡åãããã®ãå
·äœçãªã³ãŒãã«ã§ãã
⢠ãªãã¢ãããªã®ïŒ
â ã¢ããã¯æ§é åå®çã«å¿
èŠãªèŠçŽ ãèªç¶ã«èš
è¿°ã§ããŠããªããã€ç°¡æœã§ãããã
- 33. How to use Monads
ã¢ããå
¥éã»ã¢ããã®äœ¿ãæ¹
- 50. MTL (Monad Transformer Library)
⢠æšæºã®ã¢ããã©ããã©ãª
â Preludeã®ã¢ããã倧å¹
匷å
⢠ãããã®ãã®ãå«ã
â 幟ã€ãã®æšæºçãªã¢ãã
â ãããã®ã¢ãããåæããããã®
ã¢ããå€æå(Monad Transformers)
- 51. MTLã«å«ãŸããã¢ãã
⢠Monad.Cont ïŒç¶ç¶ïŒ
⢠Monad.Reader ïŒReadOnlyç¶æ
ïŒ
⢠Monad.Writer ïŒãã°åºåïŒ
⢠Monad.State ïŒMutableç¶æ
ïŒ
⢠Monad.List ïŒé決å®èšç®ïŒ
⢠Monad.Error ïŒãšã©ãŒãã³ããªã³ã°ïŒ
⢠ããã«å ããããããã®ã¢ããå€æåç
- 53. æã¡äžã(lift)
⢠StateT s IO ã®äŸ
â StateT s IO ã®äžã§IOãè¡ãã«ã¯ãæã¡äžã(lift)
ãè¡ãå¿
èŠãããïŒåãåããªãã®ã§ïŒ
- 57. äžç€ãŸãšã
⢠ã¢ãããšã¯ >>= ãš return ã®2ã€ã®æŒç®ãå®
矩ããããã®
⢠æšæºããŒã¿åã®å€ãã®ãã®ãã¢ããã«
ãªã£ãŠãã
⢠mtlãšããã¢ããå€æåã©ããã©ãªããã
⢠ã¢ããå€æåãçšããŠã¢ãããçµã¿åã
ãã
⢠ã¢ããæã¡äžãã§åã®ç°ãªãã¢ããã匵
ãåããã
- 71. â» IOã¢ããã«ã€ããŠ(1)
⢠IOã¢ããã¯ãHaskellã®ããã°ã©ã ã®äžã§ã¯å€
ãããšã®ã§ããªãã¢ããã§ã
â unsafePerformIO ãªã©ãé€ããŠ
⢠ãã®çµæãIOãåŒã¶ã³ãŒãã¯ããèªèº«ãIOã
è¡ããªããŠããIOã¢ããã«ããå¿
èŠããããŸ
ã
⢠Haskellã«ããããæ¹å€ãšããŠããŸãšããªãã
ã°ã©ã ãæžããŠãããšã»ãšãã©ãã¹ãŠã®é¢æ°
ã®åãIOã«ãªãããšããã®ããããŸã
â IOã¢ããã¯ææãããšãèšãããŸã
- 72. â» IOã¢ããã«ã€ããŠ(2)
⢠ããã§MonadIOã®åºçªã§ã
⢠IOãå¿
èŠãªã³ã³ãã¯ã¹ãã«ã€ããŠã®ã¿ã
MonadIOãèŠæ±ãããŠããã°è¯ããªããŸã
⢠Pureãªã¢ããã«é¢ããŠã¯ãå
·äœçãªåã決
å®ããã«åŸã£ãŠãèªåã§æã¡äžãããã
ããšã«ãªããŸã
⢠ã€ãŸããPureãªã³ãŒããšIOã®ã³ãŒãã®ãªãŒ
ããŒããŒããå¯èœã«ãªããšããããšã§ã
- 73. 3) MonadControlIOã®
ãã³ã¹ã¿ã³ã¹ã«ãã
⢠ããªãã®ã¢ãããäŸå€ãæ£ããæ±ããã
ãã«ããããã«ãMonadControlIOã®ãã³ã¹
ã¿ã³ã¹ã«ããŸããã
â ããããªããš bracket ãªã©ãæ£ããåŸåŠçã§ã
ãŸãã
- 75. 5) Functor, Applicative
ã®ãã³ã¹ã¿ã³ã¹ã«ãã
⢠Applicativeã¹ã¿ãã«ãšãããã®ããããŸã
â http://d.hatena.ne.jp/kazu-yamamoto/20101211/1292021817
â ãªã©ãåç
§
⢠ããªãã®ã¢ãããFunctor, Applicativeã®ã
ã³ã¹ã¿ã³ã¹ã«ãããšã䜿ãåæã倧å¹
ã«
åäžããŸã
⢠å¿
ããããã®ãã³ã¹ã¿ã³ã¹ã«ããŸããã
â Monadã®ãã³ã¹ã¿ã³ã¹ã¯å¿
ãFunctoråã³
Applicativeã®ãã³ã¹ã¿ã³ã¹ã«ã§ããŸã
- 77. â» Alternativeã¯ã©ã¹ã«ã€ããŠ
⢠m1 <|> m2 ãªãæŒç®åãå®çŸ©ãããŠãã
⢠m1ã倱æãããšããm2ã®çµæ
⢠Alternativeã®ä»»æã®ãã³ã¹ã¿ã³ã¹ã«å¯ŸããŠ
â many p â pã倱æãããŸã§ç¹°ãè¿ã
â some p â pã倱æãããŸã§1å以äžç¹°ãè¿ã
â optional p â p ã倱æãããNothingæåããã
Just aãè¿ã
â ããããå®çŸ©ããããšãã§ãã
- 79. åŸåãŸãšã
⢠ã¢ãããäœãã«ããã£ãŠ
â MTLã®ã¢ããã®çµã¿åããã§å®çŸã§ããªãã
èãã
â ãããããªã¯ã©ã¹ã®ãã³ã¹ã¿ã³ã¹ã«ããŠãã
â ã¢ãã以å€ã®æçšãªã¯ã©ã¹ãæšæºã«ããã®ã§
ããã®ãã³ã¹ã¿ã³ã¹ã«ããã