Zulip Chat Archive
Stream: new members
Topic: Making inductive type instance of has_repr type class
Mukesh Tiwari (Dec 30 2019 at 02:11):
Could some one please tell me what is wrong with my code. I have defined a inductive type and trying to make it instance of has_repr, but getting this error "equation compiler error, equation #2 has not been used in the compilation, note that the left-hand-side of equation #1 is a variable"
inductive day : Type | monday : day | tuesday : day | wednesday : day | thursday : day | friday : day | saturday : day | sunday : day protected def day.repr : day → string | monday := "monday" | tuesday := "tuesday" | wednesday := "wednesday" | thursday := "thursday" | friday := "friday" | saturday := "saturday" | sunday := "sunday" instance : has_repr day := (day.repr)
Joe (Dec 30 2019 at 02:19):
Put everything into the namespace day
inductive day : Type | monday : day | tuesday : day | wednesday : day | thursday : day | friday : day | saturday : day | sunday : day namespace day protected def repr : day → string | monday := "monday" | tuesday := "tuesday" | wednesday := "wednesday" | thursday := "thursday" | friday := "friday" | saturday := "saturday" | sunday := "sunday" instance : has_repr day := ⟨day.repr⟩ end day
Joe (Dec 30 2019 at 02:20):
or open day
before your definition of day.repr
Mukesh Tiwari (Dec 30 2019 at 02:26):
@Joe Thank you very much. I also noticed that my brackets were ( instead of ⟨.
Joe (Dec 30 2019 at 02:27):
You are welcome.
Kenny Lau (Dec 30 2019 at 03:33):
inductive day : Type | monday : day | tuesday : day | wednesday : day | thursday : day | friday : day | saturday : day | sunday : day protected def day.repr : day → string | day.monday := "monday" | day.tuesday := "tuesday" | day.wednesday := "wednesday" | day.thursday := "thursday" | day.friday := "friday" | day.saturday := "saturday" | day.sunday := "sunday" instance : has_repr day := ⟨day.repr⟩
Kenny Lau (Dec 30 2019 at 03:34):
if you use monday
instead of day.monday
, Lean treats that as a variable
Kenny Lau (Dec 30 2019 at 03:34):
so it's as if you wrote:
inductive day : Type | monday : day | tuesday : day | wednesday : day | thursday : day | friday : day | saturday : day | sunday : day protected def day.repr : day → string | x := "monday" instance : has_repr day := ⟨day.repr⟩
Kenny Lau (Dec 30 2019 at 03:34):
and that's why the second equation would never be used
Last updated: Dec 20 2023 at 11:08 UTC