lean-ja / lean-by-example

コード例で学ぶ Lean 言語
https://lean-ja.github.io/lean-by-example/
MIT License
39 stars 7 forks source link

elab 使用例: section の中でしか使用できない名前を定義する #312

Open Seasawher opened 3 months ago

Seasawher commented 3 months ago
open Lean Elab Command

elab "private section" ppLine cmd:command* ppLine "end private section": command => do
  let old ← get
  try
    for cmd in cmd do
      elabCommandTopLevel cmd
    throwAbortCommand
  finally
    set old

private section
  def foo := "hello!!"

  -- セクションの中なら当然アクセスできる
  #check foo
end private section

-- `foo` にアクセスできない
#check_failure foo
Seasawher commented 3 months ago

see: https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/private.20section/near/418114975