namespace
namespace
は,定義に階層構造を与えて整理するための構文です.名前空間 Foo
の中で bar
を定義すると,それは Foo.bar
という名前になり,名前空間 Foo
の中では短い名前 bar
でアクセスできますが,名前空間を出るとアクセスにフルネームが必要になります.
なおここでは説明のために namespace
の中をインデントしていますが,これは一般的なコード規約ではありません.
namespace Nat
def isEven (n : Nat) : Bool := n % 2 == 0
-- 同じ名前空間の中なら短い名前でアクセスできる
#check isEven
end Nat
-- 名前空間の外に出ると,短い名前ではアクセスできない
#check_failure isEven
-- フルネームならアクセスできる
#check Nat.isEven
名前空間は入れ子にすることができます.
namespace Nat
namespace Even
def thirty := 30
end Even
#check Even.thirty
end Nat
#check Nat.Even.thirty