Set Primitive Projections.
Record Box {T} := box { unbox : T }. Arguments Box : clear implicits. Definition indirect := @unbox. Goalforall T : @Box Set, unbox T -> False. intros T x. let Tindirect := constr:(indirect _ T) in let Tdefined := eval cbv [indirect] in Tindirect in let Tfolded := type of x in
cbv [unbox] in x; let Tunfolded := type of x in match Tdefined with Tdefined => idtacend; match Tfolded with Tfolded => idtacend; match Tfolded with Tunfolded => idtacend; match Tdefined with Tfolded => idtacend; match Tdefined with Tunfolded => idtacend; match Tfolded with Tdefined => idtacend; (* matches above have passed for a while
matches below used to fail with "Error: No matching clauses for match." *) match Tunfolded with Tunfolded => idtacend; match Tunfolded with Tfolded => idtacend; match Tunfolded with Tdefined => idtacend;
assert_fails (constr_eq Tdefined Tfolded);
assert_fails (constr_eq Tdefined Tunfolded);
assert_fails (constr_eq Tfolded Tunfolded); idtac Tdefined Tfolded Tunfolded. Abort.
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.