opened
moba1
username_0
add these methods:

* `#or_else(a)`: if `self` is `Just`, return `self`. but `self` is `Nothing`, return `Just.new(a)`
  * ex `Monads::Maybe.return(1).or_else(Monads::Maybe.return(2)) == Monads::Maybe.return(1)`
* `#get_or_else(a)`: if `self` is `Just`, return `Just#value!`. `self` is `Nothing`, return `a`
  * ex: `Monads::Maybe.return(1).get_or_else(4) == 1`
* `#map_or_else(a, &block)`: if `self` is `Just`, return `Just#value!` applied `&block`. `self` is `Nothing`, return `a`
  * ex: `Monads::Maybe.return(3).map_or_else(1) {|x| x + 1} == 4`

and add `Monad(T)` module and `Functor(T)`.
accordingly, replace or remove following methods.

* remove methods
  * `#tee`
  * `#value_or`
  * `#or`
* replace methods
  * `#fmap`
    * ex: `Monads::Maybe.return(1).fmap {|x| x * 2} == Monads::Maybe.return(2)`
  * `#bind`
    * ex: `Monads::Maybe.return(1).bind {|x| Monads::Maybe.return(x.to_s)}`
replace old API
issue
created
moba1
username_0
I pushed wrong author, hence, I repushed.
comment
created
moba1
username_0
Removed wrong commiter from history
comment
created
moba1
username_0
Organize commit
comment
created
moba1
username_0
@username_1 All the pointed out parts have been fixed.
please check.
comment
created
moba1
username_0
Do you have anything else you want to point out?
comment
created
alex-lairan
username_1
I don't think so.

I will implement a CI to simplify the review process.
comment
created
moba1
username_0
For now, should I merge?
comment
created
alex-lairan
username_1
Yes, let's go
comment