問題タブ [active-pattern]
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.
f# - 引数として部分的なアクティブ パターンを渡しますか?
アクティブ パターンを使用して再帰降下パーサーを作成することで F# を学習しています。
すべてのルールまたは部分的なアクティブ パターンをさまざまな方法で組み合わせる必要があるため、アクティブ パターンをパラメーターとして渡す構文に本当に不満を感じています。
次の例は、私が抱えている問題を示しています。
私の主な混乱は、「|」についてのようです オペレーター。柄の種類の一部と思われることもあれば、名前の一部と思われることもあります。
f# - マルチケースのアクティブパターンを直接呼び出す
単一のケースのアクティブなパターンを考えてみましょう:
明示的な一致の外で、上記の単一ケースのアクティブ パターンを呼び出すことができます。
次のマルチケースのアクティブなパターンがある場合:
上記のマルチケースのアクティブ パターンを直接呼び出すにはどうすればよいですか? 明らかな方法は機能しません:
上記の要求の理由は、明示的に一致を導入せずに、アクティブなパターンでテストを作成することです。現在、アクティブ パターン |Even|Odd| をテストするには、次の isEven 関数を導入する必要があります。
私ができればいいのですが:
ご協力いただきありがとうございます。
シング
f# - F# アクティブなパターンの上書きを避ける
同じオプションを使用して 2 つのアクティブなパターンを作成できないことに気付きましたが、類似したオプションを使用して 2 つのアクティブなパターンを警告なしで作成できます。
したがって、この方法で一致させる場合:
これが起こります:
(|Direct|Indirect|)
たとえば、 (route) と(|Alternating|Direct|)
(current) のように異なるセマンティック コンテキストが原因で、同じ単語が異なるパターンで表示される可能性がある状況で、既存のアクティブなパターン オプションを誤って上書きしてしまうことを少し心配しています。
どうすればこの状況を回避できますか?
f# - F# でのアクティブ パターンの適切な使用
csv 形式の使用状況ログで使用状況イベントを解析するために、アクティブ パターンを使用しています。アクティブなパターン パーツは次のとおりです。ファイル全体の解析はうまく機能し、生成されるシーケンスにはあらゆる種類の UsageEvent が含まれます。
私が抱えている問題は、おそらく ActivePattern を間違った方法で使用していることです。リストをたどって、いくつかのロジックに基づいてツリーを作成したいのですが、解析後にシーケンス内のエントリを一致させる方法がありません。
ループ関数にはstring list
. ユニオンに含まれるデータを他にどのように使用できますか、または入力を照合してから通常の型に保存する必要がありますか?
compiler-errors - エラー FS0722 を返す複数ケースのパラメーター化されたアクティブ パターン 正確に 1 つの結果を返すアクティブ パターンのみが引数を受け入れることができます
このエラーに関する日本語のページしか見つけられなかったので、ログに記録してここで質問しようと思いました。
次の FSharp アクティブ パターンがある場合 (簡略化された例):
それは完全にコンパイルされ、そのタイプを次のように示します。
しかし、次のように使用しようとすると、エラーがスローされます。
スロー: エラー FS0722: 1 つの結果を返すアクティブなパターンのみが引数を受け入れることができます
それぞれがNone/Some(x)を返す2つの単一ケースのパラメーター化されたアクティブパターンに変えることで解決できますが、なぜそうすることが許可されていないのか、および/または私が使用できる構文があるのか どうか疑問に思っています認識していません。また、なぜコンパイルされるのか疑問に思っていますが、使用できませんか?
f# - 判別共用体によるアクティブ パターン マッチング
次の形式の判別共用体をアクティブなパターン マッチングで使用する方法はありますか? 例を見つけることができませんでした。
これは私がやろうとしていることです:
「Some」を 2 番目の方法で使用できないのはなぜですか? 同じことを達成する別の方法はありますか?
f# - 関数式内で F# アクティブ パターン マッチング関数を作成する方法は?
この小さなヘルパー関数があります
また、関数インターフェイスでアクティブなパターン マッチング関数 NonEmptyString を使用すると、問題なく動作します。
今問題に。
次のように、いくつかのバリデーターをより複雑な検証制約として組み合わせるとよいでしょう。
's' が 1 つしか許可されていない場合は、関数を組み合わせて、引数 s を 1 つだけ持つことを考えることができます。そして、アクティブパターンマッチング関数はもちろん関数なので、関数合成演算子 >> を適用しますが、ここでは当てはまりません。
問題は、(F# 4.0 で) どうすればそれができるかということです。
f# - アクティブ パターンに「インライン」というキーワードを使用するのはなぜですか?
関数にキーワードを使用する理由をまだ理解できませんinline
。
私がまだ持っていないことは何を私に与えてくれますか?