We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
/- # tactic hygine タクティクの中で参照されている識別子は、タクティクを宣言するときには、 そのタクティクが使用されたときの環境に何があるかわからないため、 衝突する可能性がある。 -/ /-- exfalso タクティクを真似て自作したタクティク -/ macro "my_exfalso" : tactic => `(tactic| apply False.elim) namespace Foo /-- `False.elim` とめっちゃよく似た名前の紛らわしい定理 -/ theorem False.elim : 1 + 1 = 2 := by rfl set_option linter.unusedVariables false in example (h : False) : 1 + 1 = 2 := by -- 上の紛らわしい定理の方が使われてしまう apply False.elim done example (h : False) : 1 + 1 = 2 := by -- なんと、タクティクも衛生的になっていて、 -- (実行した環境ではなくて)宣言した環境における `False.elim` が使われる -- (すごい!) my_exfalso show False contradiction set_option hygiene false in macro "my_exfalso'" : tactic => `(tactic| apply False.elim) example (h : False) : 1 + 1 = 2 := by -- 衛生的ではないので、上の紛らわしい定理が使われてしまう my_exfalso' done end Foo
The text was updated successfully, but these errors were encountered:
タクティクで参照した識別子に関するマクロ衛生を紹介する
0d1cf11
see #668
Successfully merging a pull request may close this issue.
The text was updated successfully, but these errors were encountered: