問題タブ [computation-expression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asynchronous - FSharpX (または ExtCore) からの限られた数のワーカーと AsyncSeq による同時ダウンロード
AsyncSeq モジュールを使用して、限られた数のワーカーで同時ダウンロードを試みます。
https://github.com/fsprojects/fsharpx/blob/master/samples/Crawler.fsxの FSharpX の例に基づく
z は seq ["dl URL 3"; のようなものを取得すると仮定しました。"dl URL 5"; ... ] 'download' は Some content を返すためです。ブロッキング キューのワーカーは期待どおりに動作します。
問題は、なぜ z が空のリストなのかということです。そして期待どおりではありません seq ["dl URL 3"; "dl URL 5"; ...]?
参考までに、toBlockingSeq 関数は次のとおりです。
f# - 非同期式でelseブランチを使用する必要がありますか?
次のコードを書きたい:
F# は何らかの理由で、次のように記述する必要があると考えています。
後者の場合、エラー メッセージは生成されません。しかし、私の見解では、両方のコードは同等です。不必要な入れ子やインデントを回避できる可能性はありますか?
アップデート。私が求めていることは確かに可能です!例を見てください。実世界の例のセクションを参照してください。
コードを引用します:
したがって、可能です。唯一の問題は、async
モジュールへの拡張などを介して、何らかの形で実装できるかどうかです。
f# - この計算式ビルダーが for ループで「ユニット」を期待するのはなぜですか?
これは、この質問に対するフォローアップの質問です。
カスタム操作によって値を蓄積し、同時に標準の F# 言語構造もサポートする計算式ビルダーを作成しようとしています。簡単な例を説明するために、F# リストを作成する計算式を使用しています。kvb と Daniel からの提案のおかげで、私はさらに進んでいますが、まだfor
ループに問題があります。
ビルダー:
このバージョンでは、以前はできなかった次のようなことが可能になります。
ただし、これについてはまだコンパイラ エラーが発生します。
この場合、IDE は x in に下線for x in
を付けて、「この式は unit 型を持つことが期待されていましたが、ここでは int 型です」と伝えています。
ループ変数がユニット型であると期待している理由はよくわかりません。明らかに、どこかで間違ったメソッド シグネチャを持っています。蓄積された状態をすべての場所で通過していないのではないかと思いますが、コンパイラ エラーは、間違った場所を絞り込むのに役立っていません。任意の提案をいただければ幸いです。
f# - F# でカスタム計算操作の Yield と For を定義する方法
私は自分のアプリケーションの DSL に取り組んでおり、計算タイプとビルダーを定義する方法は次のとおりです。
結果のコードは次のようになります。
ここで、 「必要な」カスタム操作do! needFn ["def"; "dd"]
を定義して構文をより適切なものに変更したいと考えていますが、コンパイラからさまざまな苦情が寄せられています。それは正しいアプローチですか、それとも計算式を誤用していますか?
もう 1 つの問題は、 for が機能しないことです。ループ本体内で使用されます。
f# - F# 計算式と Return ステートメント
Try F# の Web サイトでは、計算式の例が示されています。
これは、Haskell にある標準の Maybe モナドに少し似ています。
ただし、真の Haskell 形式では、次の 2 行に return を使用したいと思います。
することが:
しかし、それは機能しません。私が得る最も近いものは次のとおりです。
しかし、これは汚れているようです。return
計算ビルダー関数を明示的に使用せず に使用する方法はありますか?