Skip to content
This repository was archived by the owner on Jan 5, 2025. It is now read-only.

Commit 95cab45

Browse files
committed
表現修正
1 parent b50bcd2 commit 95cab45

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

lean/main/05_syntax.lean

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ not go into great detail about this yet and postpone quite a bit of this to
1212
later 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+
-- ここで項の構文を操作する関数を明示的にマークしている
645648
def 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
-/

0 commit comments

Comments
 (0)