There's one thing I don't understand in the following signature provided for bind :
val bind : ('a -> Result<'b,'c>) -> Result<'a,'c> -> Result<'b,'c>
The author says that it takes one parameter, a function and returns another function, but then why are there 3 args in the signature ?I would have expected something like this :
val bind : ('a -> Result<'b,'c>) -> (Result<'a,'c> -> Result<'b,'c>)
for something that takes a function and returns another function adapted to the input, or something like this : val bind : ('a -> Result<'b,'c>) -> Result<'a,'c> -> Result<'b,'c>
for a function that takes a function G and an input I and applies G to I if possible ad returns the eventual result (curried, Haskell-style).What am I missing about F# ?