問題タブ [non-exhaustive-patterns]

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.

0 投票する
1 に答える
5268 参照

haskell - 例外: パターン マッチングの失敗 Haskell

Haskellの標準単語機能を実装しようとしています。State Monad を使用して問題を解決しています。

私のコードは:

私がする時:

次のエラーが表示されます。

コードはエラーなしで ghci にロードされています。私は何を間違っていますか?

0 投票する
1 に答える
164 参照

haskell - Haskell: 関数内の非表現的なパターンを修正

AST をトラバースし、使用された関数と変数のマップとそれらが何回発生したかを返すプログラムがあります。ここにあります:

ほとんどの場合、プログラムは実行され、動作しますが、「Paren」(t3 など) を使用して AST で「vars」を呼び出すと、次のエラーが発生します。

これを修正する方法がわからないので、助けを借りることができます。ちなみに、私が使っているコンストラクタはhttp://hackage.haskell.org/packages/archive/haskell-src-exts/1.0.1/doc/html/Language-Haskell-Exts-Syntax.htmlにあります。 #t: 役立つ場合のExp 。

前もって感謝します!

0 投票する
1 に答える
1495 参照

haskell - Haskellで配列の長さを計算する - 非網羅的なパターンエラー

私はこことネットで一般的に検索しましたが、この質問に答えていると思われるものは何も見つかりません. 大学のモジュールで Haskell をいじり始めたばかりで、配列の長さを計算する関数 (基本的に既存の長さ関数) を定義する際に問題が発生しています。

私の講義ノートでは、関数は次のように与えられます。

これは私には理にかなっています。何も欠けているようには見えず、他の場所でも非常によく似たものが投稿されているのを見たことがありますが、GHCiでは「非網羅的なパターン」エラーがスローされ、一生できません私は理由を理解します。

どんな助けでも大歓迎です、ありがとう

0 投票する
1 に答える
454 参照

haskell - GHC は、型チェッカーによって強制される非網羅的なパターンについて不平を言う

次のコードがあります

コンパイルまたは解釈すると-Wall、次の警告が表示されます。

通常、これは予想されることです。通常、パターンが考えられるすべてのケースをカバーすると推論できたとしても、コードを実行せずにコンパイラーがそれを知る方法はありません。ただし、提供されたパターンの網羅性は、コンパイル時に実行される型チェッカーによって適用されます。GHC によって提案されたパターンを追加すると、コンパイル時にエラーが発生します。

私の質問はこれです: GHC の警告は GHC の拡張機能とうまく機能しませんか? 彼らはお互いを認識しているはずですか?この機能 (拡張機能を考慮した警告) は将来のリリースで予定されていますか? または、この機能の実装に技術的な制限はありますか?

解決策は単純なようです。コンパイラは、おそらく一致しないパターンを関数に追加し、提案されたパターンが適切に型付けされているかどうかを型チェッカーに再度問い合わせることができます。そうである場合は、実際にパターンの欠落としてユーザーに報告できます。

0 投票する
3 に答える
737 参照

haskell - 関数Haskellの非網羅的パターン

要素をバイナリツリーに挿入する関数を作成しましたが、実行しようとするたびに、関数に網羅的でないパターンが表示されます。

ヒントを教えてください。ありがとう

0 投票する
0 に答える
204 参照

haskell - 中置演算子の作成

私は解決できないように見える小さな問題に遭遇しました.数時間それを試してみましたが、役に立ちませんでした.

データ型 Hand を定義しました。

そして、私が使用している別のタイプ:

2 つの手を追加して 3 つ目の手を返す中置演算子を作成しようとしています。

これでクイックチェックテストを実行して、関連付けられているかどうかを確認すると、数回後にエラーが発生します。エラーは言う:

返される 3 つの引数は空 (常にこれが最初の引数) で、2 番目と 3 番目の引数は大きなハンドです。例:エラーの画像。 また、quickchest テストは次のようになり((hand1 <+ hand2) <+ hand3) == (hand1 <+ (hand2 <+ hand3))ます。

考えられるすべてのシナリオを処理するのに十分なケースがないと思いますか? 私は何がうまくいかなかったのか理解できません。:(

直接的な解決策は避けてください。ヒントは役に立ちます。

編集:有益なコメンターとして、2つの手が空の場合のケースを提案および追加しました。これにより、空の手が返されます。すべてがうまく機能するようになりました。:) そして、混乱を解消するために、空の手が何であるかを以前に宣言しました。私のコードでは空と空は2つの異なるものであり、私はそれらを「正しく」使用しました。:)

0 投票する
1 に答える
168 参照

haskell - Haskell の無尽蔵

Haskell コードの網羅的ではない部分を特定するのを手伝ってくれる人がいるかどうか疑問に思っていましたか? リストの最後で基本ケースが満たされていないことがわかりません。

どうもありがとう

ジョニー

0 投票する
2 に答える
559 参照

haskell - 関数 haskell の非網羅的なパターン

要素リストが 1 つあるケースを見逃していると思いますが、それを書く方法が見つかりません。誰か助けてもらえますか?