Agda 練習中です
Agda を勉強中です。いわゆる初心者マークです。どこぞのチュートリアルに載ってたこのコードが通らないので困る。最後の odd k の型が合わないらしい。
あと dotted pattern っていうのもいまいち理解に自信がない。型から値がわかるような仮引数につけるっぽいんだけど、それ以外の用法もあるっぽい?誰か「初めての Agda」(O'Reilly)みたいなのを書いてください。
module Views where data Nat : Set where zero : Nat succ : Nat -> Nat _+_ : Nat -> Nat -> Nat zero + _ = zero (succ m) + n = succ (m + n) _*_ : Nat -> Nat -> Nat zero * _ = zero (succ zero) * n = n (succ m) * n = m + (m * n) one = succ zero two = succ one data Parity : Nat -> Set where even : (k : Nat) -> Parity (k * two) odd : (k : Nat) -> Parity (one + (k * two)) parity : (n : Nat) -> Parity n parity zero = even zero parity (succ n) with parity n parity (succ .(k * two)) | even k = odd k parity (succ .(one + (k * two))) | odd k = even (succ k)
zero != k * succ (succ zero) of type Nat when checking that the expression odd k has type Parity (succ (k * succ (succ zero)))