This repository was archived by the owner on Jan 5, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ not go into great detail about this yet and postpone quite a bit of this to
1212later chapters.
1313
1414--#--
15- この章では、Leanにおける構文の宣言とその操作方法について説明します。構文を操作する方法はたくさんあるため、この章では詳細にはまたあまり深入りせず 、ほとんどを後の章に先送りします。
15+ この章では、Leanにおける構文の宣言とその操作方法について説明します。構文を操作する方法はたくさんあるため、この章ではまだ詳細にあまり深入りせず 、ほとんどを後の章に先送りします。
1616
1717--#--
1818## Declaring Syntax
@@ -641,7 +641,10 @@ in the next example Lean will allow us to call `getNat` on the resulting
641641この例の `x` と `y` は `Syntax` ではなく `` TSyntax `term `` 型であることに注意してください。コンストラクタを見ればわかるように、完璧に `TSyntax` ではない型だけで構成されている `Syntax` に対してパターンマッチしたのにも関わらずにこうなってしまっているのは、いったい何が起こっているのでしょうか?基本的に、`` `() `` 構文は賢いため、マッチする構文からくる可能性のあるもの(この場合は `term`)の中で最も一般的な構文カテゴリを把握することができます。この時に型付けされた構文型 `TSyntax` が用いられます。これはそれのもとになった構文カテゴリの `Name` でパラメータ化されています。これはプログラマにとって何が起こっているのかを確認するために便利なだけでなく、他にも利点があります。例えば、次の例で構文カテゴリを `num` に限定すると、Lean はパターンマッチやパニックのオプション無しで、結果の `` TSyntax `num `` に対して直接 `getNat` を呼び出すことができます:
642642-/
643643
644+ --#--
644645-- Now we are also explicitly marking the function to operate on term syntax
646+ --#--
647+ -- ここで項の構文を操作する関数を明示的にマークしている
645648def isLitAdd : TSyntax `term → Option Nat
646649 | `(Nat.add $x:num $y:num) => some (x.getNat + y.getNat)
647650 | _ => none
@@ -988,5 +991,4 @@ the bound variables, we refer the reader to the macro chapter.
988991 ヒント:`Std.ExtendedBinder.extBinder` パーサを使ってください。
989992 ヒント:これらの import を機能させるには読者の Lean プロジェクトに batteries をインストールする必要があります。
990993
991- --#--
992994-/
You can’t perform that action at this time.
0 commit comments