SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Monad as "Things to Do"
Yuji Yamamoto
2015-05-24
Nice to meet you!
Yuji Yamamoto(@igrep) age 26.
Remember this avator:
Nice to meet you!
Yuji Yamamoto(@igrep) age 26.
Japanese Ruby engineer working at Sansan, Inc.
Hobby Haskeller.
Holding workshop of Haskell (Japanese) per month.
I'm gonna talk about...
Describe Monad in Haskell from a my point of view.
This↓
class Monad m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
-- snip. --
I don't know much about Monad in category theory.
Disclaimer: it'd sound too natural for people who already know
Monad.
In short,
I got fairy sure of Monad in Haskell by interpreting it as
"things to do every time a function returns a value."
Monad is a type class
Like this (reprinted) ↓
class Monad m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
-- snip. --
Recall what a type class is:
something like...
Interface in Java and C# etc.
Module providing mix-in in Ruby.
=> Provides a way to put types with same behavior
altogether!
Why type class is useful
When creating a type, get various functions available for the
type class
only by defining the required methods.
The only thing to do is to write all the computation unique to
the new type in the required (undefined) methods!
Then, how about Monad?
By defining only return and >>= method,
do notation available!
And more!
Write only computation unique to a new Monad (its instance)
in the required (and undefined) method!
Let's see >>= method!
(>>=) :: m a -> (a -> m b) -> m b
Like the other type classes, Monad abstracts types
by defining the unique computation in the required >>=
method.
Let's see >>= method!
(>>=) :: m a -> (a -> m b) -> m b
For example...
In Maybe, >>= checks Just a or Nothing
before passing a of m a to (a -> m b).
In Reader, >>= supplies the missing argument to the reader
function
before passing a of m a to (a -> m b).
In Parser, >>= consumes the given string
before passing a of m a to (a -> m b).
Let's see >>= method!
(>>=) :: m a -> (a -> m b) -> m b
In both types,
>>= has some required computation
to pass a of m a to (a -> m b).
In addition,
>>= is implemented so that
the required computation can be repeated by passing m b of
(a -> m b) to another function.
In other words,
Monad's >>= has all things to do
in the part of passing a of m a to (a -> m b)
Monad assigns >>= things to do
to pass a value (not wrapped by a Monad) to a (a -> m b)
function
each time the source (a -> m b) function returns a value.
That is!
Monad is useful
when you have many functions of type (a -> m b) with things
to do.
For example!!
For functions that force you to check if successful each time
executing.
=> Maybe Monad
For functions that force you to append the result log each
time executing.
=> Writer Monad
For functions that force you to make a side effect (e.g. I/O)
each time executing.
=> IO Monad
Then, what's the merit of this idea?
I've seen many metaphors describing Monads (in Japanese),
But all of them are too abstract to grasp.
Then, what's the merit of this idea?
By contrast, "things to do each time a function returns a
value" makes
it easier to imagine at least for us programmers (probably).
it possilbe to describe Monad based only on its property as a
type class.
them find Monad's merit more naturally.
Especially for those who are careful about DRYness
by telling "Monad packs things to do every time into one method".
it unnecessay to classify Monads into smaller kinds.
e.g. "failure monads", "stateful monads" etc.
Conclusion
Monad in Haskell is a type class.
Type classes abstract types with same behavior.
Monad abstracts "things to do each time a function returns a
value".
Thus, I've appended a new page of the history of the
numerous Monad tutorials...

Contenu connexe

Similaire à Monad as things to do

The Road To Monad Transformers
The Road To Monad TransformersThe Road To Monad Transformers
The Road To Monad TransformersPawel Lisewski
 
Programming with effects - Graham Hutton
Programming with effects - Graham HuttonProgramming with effects - Graham Hutton
Programming with effects - Graham HuttonWen-Shih Chao
 
Machine learning @ Spotify - Madison Big Data Meetup
Machine learning @ Spotify - Madison Big Data MeetupMachine learning @ Spotify - Madison Big Data Meetup
Machine learning @ Spotify - Madison Big Data MeetupAndy Sloane
 
[FT-11][ltchen] A Tale of Two Monads
[FT-11][ltchen] A Tale of Two Monads[FT-11][ltchen] A Tale of Two Monads
[FT-11][ltchen] A Tale of Two MonadsFunctional Thursday
 
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...Philip Schwarz
 
Exploring Algorithms
Exploring AlgorithmsExploring Algorithms
Exploring AlgorithmsSri Prasanna
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp languageDavid Gu
 

Similaire à Monad as things to do (10)

The Road To Monad Transformers
The Road To Monad TransformersThe Road To Monad Transformers
The Road To Monad Transformers
 
Programming with effects - Graham Hutton
Programming with effects - Graham HuttonProgramming with effects - Graham Hutton
Programming with effects - Graham Hutton
 
Machine learning @ Spotify - Madison Big Data Meetup
Machine learning @ Spotify - Madison Big Data MeetupMachine learning @ Spotify - Madison Big Data Meetup
Machine learning @ Spotify - Madison Big Data Meetup
 
Comonads in Haskell
Comonads in HaskellComonads in Haskell
Comonads in Haskell
 
[FT-11][ltchen] A Tale of Two Monads
[FT-11][ltchen] A Tale of Two Monads[FT-11][ltchen] A Tale of Two Monads
[FT-11][ltchen] A Tale of Two Monads
 
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit - Haskell and...
 
Monads in Clojure
Monads in ClojureMonads in Clojure
Monads in Clojure
 
Bound
BoundBound
Bound
 
Exploring Algorithms
Exploring AlgorithmsExploring Algorithms
Exploring Algorithms
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp language
 

Plus de 悠滋 山本

Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】悠滋 山本
 
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)悠滋 山本
 
Whom to Recommend Elm to?
Whom to Recommend Elm to?Whom to Recommend Elm to?
Whom to Recommend Elm to?悠滋 山本
 
いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談悠滋 山本
 
Predefを使ったsqlのトレース
Predefを使ったsqlのトレースPredefを使ったsqlのトレース
Predefを使ったsqlのトレース悠滋 山本
 
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!悠滋 山本
 
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad悠滋 山本
 

Plus de 悠滋 山本 (7)

Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
 
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
 
Whom to Recommend Elm to?
Whom to Recommend Elm to?Whom to Recommend Elm to?
Whom to Recommend Elm to?
 
いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談
 
Predefを使ったsqlのトレース
Predefを使ったsqlのトレースPredefを使ったsqlのトレース
Predefを使ったsqlのトレース
 
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
 
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
 

Dernier

Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfRagavanV2
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayEpec Engineered Technologies
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...tanu pandey
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfRagavanV2
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationBhangaleSonal
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdfKamal Acharya
 
22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf203318pmpc
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXssuser89054b
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . pptDineshKumar4165
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxJuliansyahHarahap1
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...SUHANI PANDEY
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoordharasingh5698
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projectssmsksolar
 

Dernier (20)

Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 

Monad as things to do

  • 1. Monad as "Things to Do" Yuji Yamamoto 2015-05-24
  • 2. Nice to meet you! Yuji Yamamoto(@igrep) age 26. Remember this avator:
  • 3. Nice to meet you! Yuji Yamamoto(@igrep) age 26. Japanese Ruby engineer working at Sansan, Inc. Hobby Haskeller. Holding workshop of Haskell (Japanese) per month.
  • 4. I'm gonna talk about... Describe Monad in Haskell from a my point of view. This↓ class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b -- snip. -- I don't know much about Monad in category theory. Disclaimer: it'd sound too natural for people who already know Monad.
  • 5. In short, I got fairy sure of Monad in Haskell by interpreting it as "things to do every time a function returns a value."
  • 6. Monad is a type class Like this (reprinted) ↓ class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b -- snip. --
  • 7. Recall what a type class is: something like... Interface in Java and C# etc. Module providing mix-in in Ruby. => Provides a way to put types with same behavior altogether!
  • 8. Why type class is useful When creating a type, get various functions available for the type class only by defining the required methods. The only thing to do is to write all the computation unique to the new type in the required (undefined) methods!
  • 9. Then, how about Monad? By defining only return and >>= method, do notation available! And more! Write only computation unique to a new Monad (its instance) in the required (and undefined) method!
  • 10. Let's see >>= method! (>>=) :: m a -> (a -> m b) -> m b Like the other type classes, Monad abstracts types by defining the unique computation in the required >>= method.
  • 11. Let's see >>= method! (>>=) :: m a -> (a -> m b) -> m b For example... In Maybe, >>= checks Just a or Nothing before passing a of m a to (a -> m b). In Reader, >>= supplies the missing argument to the reader function before passing a of m a to (a -> m b). In Parser, >>= consumes the given string before passing a of m a to (a -> m b).
  • 12. Let's see >>= method! (>>=) :: m a -> (a -> m b) -> m b In both types, >>= has some required computation to pass a of m a to (a -> m b). In addition, >>= is implemented so that the required computation can be repeated by passing m b of (a -> m b) to another function.
  • 13. In other words, Monad's >>= has all things to do in the part of passing a of m a to (a -> m b) Monad assigns >>= things to do to pass a value (not wrapped by a Monad) to a (a -> m b) function each time the source (a -> m b) function returns a value.
  • 14. That is! Monad is useful when you have many functions of type (a -> m b) with things to do.
  • 15. For example!! For functions that force you to check if successful each time executing. => Maybe Monad For functions that force you to append the result log each time executing. => Writer Monad For functions that force you to make a side effect (e.g. I/O) each time executing. => IO Monad
  • 16. Then, what's the merit of this idea? I've seen many metaphors describing Monads (in Japanese), But all of them are too abstract to grasp.
  • 17. Then, what's the merit of this idea? By contrast, "things to do each time a function returns a value" makes it easier to imagine at least for us programmers (probably). it possilbe to describe Monad based only on its property as a type class. them find Monad's merit more naturally. Especially for those who are careful about DRYness by telling "Monad packs things to do every time into one method". it unnecessay to classify Monads into smaller kinds. e.g. "failure monads", "stateful monads" etc.
  • 18. Conclusion Monad in Haskell is a type class. Type classes abstract types with same behavior. Monad abstracts "things to do each time a function returns a value". Thus, I've appended a new page of the history of the numerous Monad tutorials...