私は関数型プログラミング全般に不慣れで、最近 F# を学び始めました。Async<'U option>
シーケンス内の項目を選択するために戻る非同期ワークフローを使用したいと考えていました。いい関数を見つけましたSeq.pick
が、それを非同期ワークフローでどのように使用できるかわかりません。
それが不可能な場合は、命令型スタイル プログラムを使用してリストから項目を選択する別の方法があります。以下は、私のプログラムの修正版です。フィードバックは大歓迎です。
let run = async {
while not stopped do
use! resource = acquireResourceLockAsync
let! items = fetchItemsAsync 5
let! item = Seq.pick returnIfLocked items
let! status = performTaskAsync item
do! updateStatusAsync status
do! Async.Sleep 1000
}
ありがとうございます。
編集: jpalmer の回答に基づいて質問を更新しました。Seq.filter
私は両方と以前に気づき、ロックできる最初のアイテムが必要なので、それが私のニーズをよりよく満たすSeq.pick
と判断しました. Seq.pick
ただし、関数の戻り値を変更するのを忘れていました。 を返す代わりに、 を返すtrue
必要がありSome(item)
ます。その更新により、1) 変換するスレッドをブロックし、2) 命令型のループに頼ることなく、これにアプローチするエレガントな方法はありAsync<'U option>
ます'U
か?