小编tom*_*asK的帖子

如何在FSharp查询表达式中使用复合键子句编写连接?

如何用F#中的复合键子句写这个C#join?:

join k in DataContext.Catalogs on
   new { id = o.IDENT, v = o.VZ } equals
   new { id = k.IDENT, v = k.VZ }
Run Code Online (Sandbox Code Playgroud)

这是类似的问题: 在F#3.0查询中多列组合,仍然没有得到答案.但我无法相信在FSharp中编写它并不容易.

谢谢

f# join clause c#-to-f#

5
推荐指数
1
解决办法
839
查看次数

Delay如何在continuation monad中正常工作以防止stackoverflow?

这是一个参考问题:StackOverflow在延续monad中
与我玩了一点,需要一些澄清.

1)我想这个:

member this.Delay(mk) = fun c -> mk () c
Run Code Online (Sandbox Code Playgroud)

使得计算工作流程中的行为能够实现这些差异,如toyvo所示:

cBind (map xs) (fun xs -> cReturn (f x :: xs))  

cBind (fun c -> map xs c) (fun xs -> cReturn (f x :: xs))
Run Code Online (Sandbox Code Playgroud)

所以我并不完全明白什么是诀窍,什么时候
(fun c -> map xs c)只有不同的符号(map xs)

2)推理问题.- 在OP的第二个映射示例中,我发现它由于推理问题而无法编译v,因为它推断fa -> b list而不是期望的a -> b.为什么以这种方式推断?如果let v = f x它会很好地推断.

3)在我看来,VS在工具提示中显示不准确的类型签名:monad的返回类型返回为:('e->'f)->f,而Bind的返回类型仅为'c->'b.- 它似乎('e->'f)c …

stack-overflow monads workflow f# continuation

5
推荐指数
1
解决办法
249
查看次数

标签 统计

f# ×2

c#-to-f# ×1

clause ×1

continuation ×1

join ×1

monads ×1

stack-overflow ×1

workflow ×1