3

複数のストリームを結合する方法を探しています。この単純な例では 5 つですが、もっと簡単に増やすことができます。私は現在 VS 2010 を使用していますが、2012 に移行する可能性があります。そのため、F# 3.0 の機能のいずれかが役立つ場合は、それらを受け入れます。

この場合、計算ビルダーは役立ちますか?

let ``open`` = groupedByDay |> Observable.bind(fun group -> group |> Observable.map     (fun bar -> bar.Open) |> Observable.FirstAsync)
let high = groupedByDay |> Observable.bind(fun group -> group |> Observable.map (fun bar -> bar.High) |> Observable.Max)
let low = groupedByDay |> Observable.bind(fun group -> group |> Observable.map (fun bar -> bar.Low) |> Observable.Min)
let close = groupedByDay |> Observable.bind(fun group -> group |> Observable.map (fun     bar -> bar.Close,bar.Time) |> Observable.LastAsync)
let volume = groupedByDay |> Observable.bind(fun group -> group |> Observable.map (fun bar -> bar.Volume) |> Observable.Sum)
let combined = ``open``.And(high).And(low).And(close).And(volume).Then(fun o h l (c,t) v -> {Open = o; High = h; Low = l; Close = c; Time = t; Volume = v;})
            |> Observable.atwhen
            |> Observable.perform(log "Grouped") |> Observable.subscribe(fun _ -> ())
4

0 に答える 0