Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming traverseBind是公认的FP概念吗?_Functional Programming_F# - Fatal编程技术网

Functional programming traverseBind是公认的FP概念吗?

Functional programming traverseBind是公认的FP概念吗?,functional-programming,f#,Functional Programming,F#,我有一个函数f:'a->Async,而不是最后的f的Async。但是如果我将遍历与f一起使用,结果是Async我不知道像这样类型的函数有任何标准名称。但是,您可以对代码做两个更改,这可能会有所启示。首先,您可以在不使用异步块的情况下实现它,只需使用f x或返回async.UnitNone,即立即返回None的异步计算: 我认为这没有任何名称,但您可以将函数视为Option.map,在输入不可用时具有特定的默认值。我不知道此类函数的任何标准名称。但是,您可以对代码做两个更改,这可能会有所启示。首先

我有一个函数f:'a->Async,而不是最后的f的Async。但是如果我将遍历与f一起使用,结果是Async我不知道像这样类型的函数有任何标准名称。但是,您可以对代码做两个更改,这可能会有所启示。首先,您可以在不使用异步块的情况下实现它,只需使用f x或返回async.UnitNone,即立即返回None的异步计算:


我认为这没有任何名称,但您可以将函数视为Option.map,在输入不可用时具有特定的默认值。

我不知道此类函数的任何标准名称。但是,您可以对代码做两个更改,这可能会有所启示。首先,您可以在不使用异步块的情况下实现它,只需使用f x或返回async.UnitNone,即立即返回None的异步计算:

我不认为它有任何名称,但当输入不可用时,您可以将函数视为Option.map,并使用特定的默认值

module Option =

  let traverseBindAsync (f: 'a -> Async<'b option>) (opt: 'a option) : Async<'b option> =
    async {
      match opt with
      | None -> return None
      | Some x -> return! f x
    }
let traverseBindAsync (f: 'a -> Async<'b option>) (opt: 'a option) : Async<'b option> =
  match opt with
  | None -> async.Return None
  | Some x -> f x
let traverseBindAsync (f: 'a -> Async<'b option>) (opt: 'a option) : Async<'b option> =
  opt |> Option.map f |> Option.defaultValue (async.Return None)