Creating a monad for repeated methods
I am trying to figure out which monads are in Scala.
Let's say, for example, I have methods in Java:
public void doSomeThing()
{
a.call();
}
public void doOtherThing()
{
a2.call();
}
public void doSomeOtherThing()
{
a3.call();
}
All methods starting with do
, just call the method call with the name call
. If I convert this to a generic method in Java like:
public void doGeneric(SomeClass a)
{
a.call();
}
and say it as a generic method, with a function call
, then doGeneric
is it a monad? Correct me if I am wrong.
Please note that I have provided examples in Java since I am just getting started with Scala.
source to share
The monad is associated with the concept of "container", for example Option
or List
.
Basically, the container that defines a method flatMap
is a monad:
trait Monad[A] { //let say a Monad container to be general. A well-known would be Option
def flatMap[B](f: A => Monad[B]): Monad[B]
}
In your case, you are just calling a method on one object.
You are not calculating the value "container" from another container, so you don't have a monad.
Indeed, you are just using polymorphism.
source to share