問題タブ [unification]

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 投票する
2 に答える
93 参照

haskell - タイプ `(.) (foldr(++)) (map (:))` を手動で派生させる

の型を導出しようとしています(.) (foldr(++)) (map (:))

の型を導出することから始めます。foldr (++)

そう

次に、型を導出しますmap (:)

そう

最後にタイプは(.) (foldr(++)) (map (:))

だから私は得る

しかし、GHCi に問い合わせると:t (.) (foldr(++)) (map (:))(.) (foldr(++)) (map (:)) :: [a] -> [[[a] -> [a]]] -> [[a] -> [a]]

私の結果とはどれが異なりますか、同じ結果を導き出すための助けはありますか?

ありがとう、
セバスチャン。

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

haskell - q のタイプの手動導出 (本体で指定)

qのタイプがであり、 ではない理由がわかりOrd t => [t] -> [a]ませんOrd a => [a] -> [a]

どのような状況で、入力タイプが出力と異なる可能性がありますか?

ありがとう、
セバスチャン。

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

haskell - `init を評価した結果。cuts [1,2,3]` は `(init . cuts) [1,2,3]` と違う?

(init . cuts) [1,2,3]この 2 つの評価:とinit . cuts [1,2,3]が異なる理由を理解しようとしています。

最初の結果は、[([],[1,2,3]),([1],[2,3]),([1,2],[3])] ですが、 2 番目は次のエラーを返します。

だと思いinit . cuts [1,2,3] = init (cuts[1,2,3])ますが、これは正しいですか?

ありがとう、
セバスチャン。

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

haskell - fun xss = \f -> let ope xy = x のタイプを手動で導出します。f. y in foldr1 ope xss

のタイプを手動で派生させようとしていますfun xss = \f -> let ope x y = x . f . y in foldr1 ope xss

f. y

\f -> xy = x を開きます。f. y

foldr1 ope xss

次にa ~ (b2 -> c2), a ~ (a2 -> b1), a ~ (b1 -> b2) and t4 ~ [a]、これはエラーのようです。

何か助けはありますか?

ありがとう、
セバスチャン。

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

haskell - 型の統一を防ぐ

整数のこのラッパーを考えると:

以下を実行できます。

ファントムパラメータが統一されるためです。しかし、この統合を防ぎ、 line で型エラーを発生させたいと考えていますc

ST モナドは同様の効果を達成するために rank2 型を使用します。のタイプを変更することで、おそらく同様のことができaddProxyます。しかし、私は特にこれをしたくありません。a呼び出し時に型変数が統一されないように、何らかの形で型変数に注釈を付けたいと思いaddProxyます。

これはHaskellで可能ですか?そのようなオプションが危険である理由はありますか?


編集:

部分的な解決策について詳しく説明しましょう ( が必要-XScopedTypeVariablesです)。上記のコードを次のように書き直すことができます。

と を統合できないcためa1、これは型エラーを正しく引き起こします。a2しかし、これには 2 つの欠点がaありbます。の結果の型を明示的に指定する必要がありますmkProxy

これらの欠点を修正することは可能ですか?

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

prolog - 複数の条件のうちの 1 つを求める

これは非常に基本的なことだと思いますが、Prolog チュートリアルからこれを解決できなかったので、ここの誰かが私の問題を解決するのを手伝ってくれることを願っています.

いくつかの条件のいずれかが当てはまる場合に当てはまる用語があります。

すべての属性と変数には固定値が付属しており、「{}」セクションの条件のいずれかが満たされている場合、「答え」を提供したいのですが、何らかの理由で機能しません。問題は、条件の 1 つ、たとえば最初の条件を確認するだけで、期待どおりに機能することです。しかし、論理的な「または」が適切に機能しなかったため、ルールを 4 回コピーして貼り付けたくありません。

言葉で言えば、完全に異なるものをコーディングした場合に備えて、最初の条件は、Att1が1に等しく、 Att2が2に等しく、 Att33に等しいかどうかを確認することを意味します。その場合は、Var1がVarの値と等しいことも確認します。そうでない場合は、他の条件を解決できるかどうかを確認してください。

編集:「;」があったことがわかりました コードが多すぎます。