Zulip Chat Archive
Stream: general
Topic: auto derive has_to_string
Zesen Qian (Jul 21 2018 at 20:49):
RT, something like this in lean?
Mario Carneiro (Jul 21 2018 at 20:56):
No, I don't think this one has a derive handler, although you could totally write one
Simon Hudon (Jul 21 2018 at 20:59):
If you don't mind going into meta
-land, you can derive has_reflect
for your type and use the following to just pretty-print the Lean expression that corresponds to a value of your type:
meta def to_string' {α : Type*} [has_reflect α] (x : α) : string := (to_fmt (reflect x)).to_string
Zesen Qian (Jul 21 2018 at 21:04):
has_reflect
asks me to provide a expr
for every value? Not sure how to do it for my type.
Zesen Qian (Jul 21 2018 at 21:05):
@Mario Carneiro yeah, it's just a very long type.
Simon Hudon (Jul 21 2018 at 21:05):
You write @[derive has_reflect]
above your type definition
Mario Carneiro (Jul 21 2018 at 21:06):
I meant write a derive handler
Zesen Qian (Jul 21 2018 at 21:07):
@Simon Hudon very cool, thanks.
Simon Hudon (Jul 21 2018 at 21:09):
You're welcome
Simon Hudon (Jul 21 2018 at 21:10):
@Mario Carneiro Such a derive handler seems like a lot of work but I'm wondering if piggy backing on top of has_reflect
might help us be extra lazy
Last updated: Dec 20 2023 at 11:08 UTC