小编Phi*_*ens的帖子

f#foldback:累加器是否需要与列表类型相同?

我有以下代码.我花了很多时间试图找出它为什么抱怨我的List.foldback函数的第二个参数.它抱怨它想要"acc"(char*bool*(Direction - > int*int)*int).这对我没有任何意义,因为文档显示它只是匹配'State.在这种情况下,我正试图制作"国家"运动名单".

有关我正在做的事情的完整描述,请访问Code golf voronoi问题

type Direction = Left=0 | Up=1 | Right=2 | Down=3
type Movement = (char * (int * int) * Direction)

let rec masterClaims (items:Movement list) =
    items

    // Execute these methods in the order in which they are passed. 
    |> List.map (fun (ch, coord, dir) -> 
        (
            ch,
            // This function does the claiming. This has to be 
            // done in the order of the input list. 
            claimCells ch coord, …
Run Code Online (Sandbox Code Playgroud)

f# fold

2
推荐指数
1
解决办法
368
查看次数

F#:Add方法和IObserver <>的关系是什么

我有以下代码工作代码,我从Mark Seeman的Pluralsight视频中获得.我不明白最后一行是如何工作的.

let sharpObjectCollection = ConcurrentBag<Envelope<SharpObject>>()
let sharpObjectSubject = new Subjects.Subject<Envelope<SharpObject>>()
sharpObjectSubject.Subscribe sharpObjectCollection.Add |> ignore
Run Code Online (Sandbox Code Playgroud)

查看Subscribe文档,我看到它需要一个IObserver作为参数,但我传递的是ConcurrentBag.Add方法.

这里发生了什么?这是F#的一个特色吗?我也可以在c#中这样做吗?

f# system.reactive

2
推荐指数
1
解决办法
57
查看次数

这里的输出应该是什么?

在我看来,输出应该是EMAM5倍,但它打印EMAM6次.谁能解决这个问题?一点点解释会有所帮助.

#include <stdio.h>

int main()
{
    int n = 0;
    while(n < printf("EMAM\n"))
    {
        n++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c printf while-loop

2
推荐指数
1
解决办法
44
查看次数

MSR Orleans,PlacementStrategy如何运作?

在奥尔良,PlacementStrategy如何运作?我看到PlacementStrategy有几种实现,包括RandomPlacement,PreferLocalPlacement,ActivationCountBasedPlacement和StatelessWorkerPlacement.

我有一些问题,如何使用它们如何实现?如何指定呼叫应该是Prefer-Local vs RandomPlacement?

我正在查看代码,我没有看到基于这些放置策略选择一个执行路径与另一个执行路径的代码.那会发生什么?

orleans

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

f#:使用".. in let ..."的示例中的奇怪语法

我正在阅读关于RosettaCode的示例,并且不完全知道以下行正在做什么.

let min,subheap = findMin heap' in let rtn = root topnode
Run Code Online (Sandbox Code Playgroud)

它似乎findMin heap'是自包含的执行单元.我不知道它与"in"运算符的关系,也不了解在"in"运算符中使用let语句.

这是整个方法

let rec private findMin heap =
  match heap with | [] -> raise Empty_Heap //guarded so should never happen
                  | [node] -> root node,[]
                  | topnode::heap' ->
                    let min,subheap = findMin heap' in let rtn = root topnode
                    match subheap with
                      | [] -> if rtn.k > min.k then min,[] else rtn,[]
                      | minnode::heap'' ->
                        let rmn = root minnode
                        if …
Run Code Online (Sandbox Code Playgroud)

f# rosetta-code

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

为什么ConvertTo-Json会丢弃值

我使用PowerShell来探索REST API.我发现了一个奇怪的异常现象.当我序列化/描述以下responses对象时,对象消失了!我已经验证,当转换为.net对象时,它仍然完好无损,因此从.net对象转换为JSON时会出现问题.

$json  = @'
{
  "stubs": [
    {
      "responses": [
        {
          "is": {
            "body": "54"
          }
        },
        {
          "is": {
            "body": "21"
          }
        },
        {
          "is": {
            "body": "0"
          }
        }
      ]
    }
  ]
}
'@
$json | ConvertFrom-Json | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)

上述转换的结果如下:

{
  "stubs": [
    {
      "responses": "  "
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果我运行这个,我按预期收到54:

$json | ConvertFrom-Json | %{ $_.stubs.responses[0].is.body }  
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu上运行,但不相信这会有所作为.对于Windows上的某些人来说,这应该很容易验证.

powershell .net-core

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