小编aka*_*ara的帖子

使用计算表达式组合引用的函数

我环顾四周,努力想要得到答案; 我确信有一个明显的答案,但我似乎无法找到它; 或者我遇到了与计算表达式一起使用时无法通过的引用限制.

基本上我想使用计算F#工作流程来处理如下定义的lambda.尝试将这些工作流程组合在一起时会出现问题.理想情况下,我想使用let组合Workflow <'Env,'Result>实例!句法.我有点天真的尝试如下:

type Workflow<'Env, 'Result> = Expr<'Env -> 'Result>
type WorkflowSource<'Env, 'Result> = 'Env -> 'Result

type WorkflowBuilder() = 
    member x.Bind
        (workflow: WorkflowSource<'Env, 'OldResult>,
         selector: 'OldResult -> WorkflowSource<'Env, 'NewResult>) : WorkflowSource<'Env, 'NewResult> =
         (fun env -> (selector (workflow env) env))
    member x.Bind
        (workflow: Workflow<'Env, 'OldResult>,
         selector: 'OldResult -> WorkflowSource<'Env, 'NewResult>) 
         : Workflow<'Env, 'NewResult> =
         <@ (fun env -> (selector ((%workflow) env) env)) @>
    // This bind is where the trouble is
    member x.Bind
        (workflow: WorkflowSource<'Env, 'OldResult>,
         selector: …
Run Code Online (Sandbox Code Playgroud)

f# quotations computation-expression

6
推荐指数
1
解决办法
296
查看次数

标签 统计

computation-expression ×1

f# ×1

quotations ×1