Skip to content

Commit

Permalink
option のデフォルト値を取得する関数
Browse files Browse the repository at this point in the history
Fixes #962
  • Loading branch information
Seasawher committed Oct 8, 2024
1 parent 88ffba0 commit 0859bb0
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions LeanByExample/Reference/Option/AutoImplicit.lean
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,8 @@
`autoImplicit` オプションは、自動束縛暗黙引数(auto bound implicit arguments)という機能を制御します。
有効にすると、宣言が省略された引数が1文字であるとき、それを暗黙引数として自動的に追加します。
```admonish error title="非推奨"
この機能には以下の問題点が指摘されており使用は推奨されません。
* タイポを見過ごしやすくなってしまう
* 自動束縛の結果どのような型になるか指定できないため、意図しない型に束縛されてバグを引き起こす可能性がある
```
-/
import Lean --#
set_option relaxedAutoImplicit false --#

-- `autoImplicit` が無効の時
Expand Down Expand Up @@ -55,3 +50,29 @@ def nonempty₃ : List ℱ → Bool
| _ :: _ => true

end autoImpl

/- ## 問題点
```admonish error title="非推奨"
この機能には以下の問題点が指摘されており使用は推奨されません。
* タイポを見過ごしやすくなってしまう
* 自動束縛の結果どのような型になるか指定できないため、意図しない型に束縛されてバグを引き起こす可能性がある
```
デフォルトではこのオプションは有効になっているため、`lakefile` の設定で無効にすることをお勧めします。
-/

open Lean Elab Command

/-- オプションのデフォルト値を取得する関数 -/
def getDefaultValue (opt : Name) : CommandElabM Unit := do
let decls ← getOptionDecls
match decls.find? opt with
| some decl =>
logInfo m!"default value of {opt} is {decl.defValue}"
| none =>
logInfo m!"{opt} is unknown"

/-- info: default value of autoImplicit is true -/
#guard_msgs in
#eval getDefaultValue `autoImplicit

0 comments on commit 0859bb0

Please sign in to comment.