x != y of type Y when checking that the pattern p(y) has type Z
という形式の奇妙なエラーが発生します。なぜ、どのように私がこれを取得しているのか分かりませんし、問題を解決したいと思います。問題のインスタンスが続きます。ありがとうございました。x!= y型のパターンp(y)がZ型であることをチェックするときのY型y
私はセット、
postulate A : Set
やセットなどの要素を解釈する方法、そのセットのペアを使用して、その後
postulate F : A → Set
を、と仮定しました
record B : Set where field s t : A
パラメータ化された型を作成することができます:
data C : A → Set where MkC : (b : B) → F (B.s b) → C (B.t b)
は、今私は、例えば、関数に
ABCF : ∀ a → (f : A → A) → C a → C (f a)
ABCF t f e = {!!}
を形成したいと私はC-c C-c
を介して第3引数にパターンマッチングによってそうそしてそうすることが私に
b
上
ABCF .(B.t b) f (MkC b x) = {!!}
次に別C-c C-c
、利回り
ABCF t f (MkC record { s = s ; t = .t } x) = ?
しかしこのケーシングは、直ちにエラーが続く:t'
と.t
の交換
B.t b != t of type A
when checking that the pattern MkC record { s = s ; t = .t } x has
type C t
はまた、これを解決しません。
このエラーの原因と解決方法を教えてください。
編集
としては、上記の問題はバグが原因である可能性があり、以下の答えが、何逆の例?
FCBA : ∀ {a} (f : A → A) → C (f a) → C a
FCBA {a} f (MkC record { s = s ; t = .(f a) } x) = ?
どうすればこの問題を解決できますか?エラーの原因となるもの
B.t b != f a of type A
when checking that the pattern MkC record { s = s ; t = .(f a) } x
has type C (f a)
ドットの位置を切り替えるというアイデアは、私が心に留めようとしているトリックです。私は自分の問題を逆に語ったようです。上記の編集をご覧ください。 –
@Musa Al-hassy、私は答えを更新しました。 – user3237465