@[class]
- repr : α → string
Implement has_repr
if the output string is valid lean code that evaluates back to the original object.
If you just want to view the object as a string for a trace message, use has_to_string
.
Example: #
#eval to_string "hello world"
-- [Lean] "hello world"
#eval repr "hello world"
-- [Lean] "\"hello world\""
Reference: https://github.com/leanprover/lean/issues/1664
Instances
- bool.has_repr
- decidable.has_repr
- list.has_repr
- unit.has_repr
- option.has_repr
- sum.has_repr
- prod.has_repr
- sigma.has_repr
- subtype.has_repr
- nat.has_repr
- char.has_repr
- string.has_repr
- fin.has_repr
- unsigned.has_repr
- ordering.has_repr
- name.has_repr
- binder_info.has_repr
- environment.has_repr
- occurrences.has_repr
- congr_arg_kind.has_repr
- tactic.interactive.case_tag.has_repr
- module_info.has_repr
- expr.coord.has_repr
- expr.address.has_repr
- int.has_repr
- array.has_repr
- native.float.has_repr
- json.has_repr
- widget.interactive_expression.sf.has_repr
- rbtree.has_repr
- rbmap.has_repr
- buffer.has_repr
- std_gen.has_repr
- widget_override.interactive_expression.sf.has_repr
- norm_cast.label.has_repr
- units.has_repr
- add_units.has_repr
- pnat.has_repr
- rat.has_repr
- multiset.has_repr
- finset.has_repr
- pos_num.has_repr
- num.has_repr
- znum.has_repr
- tree.has_repr
- tactic.ring_exp.atom.has_repr
- tactic.ring_exp.coeff_has_repr
- tactic.ring_exp.ex.has_repr
- omega.ee.has_repr
- omega.int.preform.has_repr
- omega.nat.preform.has_repr
@[protected, instance]
@[protected, instance]
@[protected]
Equations
- list.repr_aux tt (x :: xs) = repr x ++ list.repr_aux ff xs
- list.repr_aux tt list.nil = ""
- list.repr_aux ff (x :: xs) = ", " ++ repr x ++ list.repr_aux ff xs
- list.repr_aux ff list.nil = ""
@[protected, instance]
Equations
- list.has_repr = {repr := list.repr _inst_1}
@[protected, instance]
Equations
- unit.has_repr = {repr := λ (u : unit), "star"}
@[protected, instance]
Equations
- n.digit_char = ite (n = 0) '0' (ite (n = 1) '1' (ite (n = 2) '2' (ite (n = 3) '3' (ite (n = 4) '4' (ite (n = 5) '5' (ite (n = 6) '6' (ite (n = 7) '7' (ite (n = 8) '8' (ite (n = 9) '9' (ite (n = 10) 'a' (ite (n = 11) 'b' (ite (n = 12) 'c' (ite (n = 13) 'd' (ite (n = 14) 'e' (ite (n = 15) 'f' '*')))))))))))))))
Equations
- base.digit_succ (d :: ds) = ite (d + 1 = base) (0 :: base.digit_succ ds) ((d + 1) :: ds)
- base.digit_succ list.nil = [1]
@[protected, instance]
Equations
- nat.has_repr = {repr := nat.repr}
Equations
Equations
- char_to_hex c = let n : ℕ := c.to_nat, d2 : ℕ := n / 16, d1 : ℕ := n % 16 in hex_digit_repr d2 ++ hex_digit_repr d1
@[protected, instance]
Equations
- char.has_repr = {repr := λ (c : char), "'" ++ c.quote_core ++ "'"}
Equations
- string.quote_aux (x :: xs) = x.quote_core ++ string.quote_aux xs
- string.quote_aux list.nil = ""
@[protected, instance]