``` fx.monad { val v: T = !foo(x) // fun fo...
# arrow
b
Copy code
fx.monad {
    val v: T = !foo(x)    // fun foo(x: Any): Option<T>; v is bound to T since ! is an alias of bind()
    !mymonadfunction(v)    // fun mymonadfunction(t: T): Option<R>; value of fx.monad {} block will be Some(R) or None
}
p
I'm using this syntax within a FreeMonad; and, vMaybe bound to an Option<T> not a T... so, i cannot use
!
for the same reason
Solved with the good syntax ! and the bind to the right place...
r
You can wrap your calls with OptionT if you want to bind inside those options.
but it’s gonna be a pain to construct the instance until we have injection in type classes ETA October