Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Char 型を紹介する #904

Merged
merged 2 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
https://raw.githubusercontent.com/lean-ja/lean-by-example/.*
https://adam.math.hhu.de/#/g/leanprover-community/NNG4
https://lean-lang.org/*
https://live.lean-lang.org/
https://reservoir.lean-lang.org/
https://dcbadge.limes.pink/api/server/*
42 changes: 42 additions & 0 deletions Examples/Type/Char.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/- # Char
`Char` 型は、Unicode 文字を表します。二重引用符 `"` ではなくてシングルクォート `'` で囲んで表されます。
-/

-- Char はシングルクォートで囲む
#check ('a' : Char)
#check ("a" : String)

-- Unicode 文字を含む
#check ('あ' : Char)
#check ('∀' : Char)
#check ('∅' : Char)

/- `Char` は、以下のように [`structure`](../Declarative/Structure.md) として定義されています。 -/

--#--
-- Char の定義が変わっていないことを確認するためのコード
/--
info: structure Char : Type
number of parameters: 0
constructor:
Char.mk : (val : UInt32) → val.isValidChar → Char
fields:
val : UInt32
valid : self.val.isValidChar
-/
#guard_msgs in #print Char
--#--
namespace Hidden --#

structure Char where
/-- Unicode スカラー値 -/
val : UInt32

/-- `val` が正しいコードポイントであること -/
valid : val.isValidChar

end Hidden --#
/- したがって `Char.val` 関数によりコードポイントを取得することができます。-/

#guard 'a'.val = 97
#guard '⨅'.val = 10757
11 changes: 4 additions & 7 deletions Examples/Type/String.lean
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/- # String

`String` は文字列を表す型です。次のように、文字を表す型 `Char` のリストとして定義されています。
`String` は文字列を表す型です。次のように、文字を表す型 [`Char`](./Char.md) のリストとして定義されています。
-/
import Lean --#
--#--
Expand All @@ -24,18 +24,15 @@ structure String where
data : List Char

end Hidden --#
/- ## 基本的な操作

文字列に関する基本的な操作を紹介します。-/

/- ### 文字列結合
/- ## 文字列結合
`String.append` を使って文字列を結合することができます。この関数は `++` という記号が割り当てられています。
-/

#guard String.append "Hello, " "world!" = "Hello, world!"
#guard "Hello, " ++ "world!" = "Hello, world!"

/- ### 文字列の長さ
/- ## 文字列の長さ
文字列の長さは `String.length` 関数で取得することができます。
-/

Expand Down Expand Up @@ -69,7 +66,7 @@ and both `String.utf8ByteSize` and `String.length` are cached and O(1).
-/
#guard_msgs in #doc String

/- ### 文字列補完
/- ## 文字列補完

`String` 型の変数の「評価した後の値」を文字列に埋め込むことができます。これを文字列補完と呼びます。Lean では、これは `s!` という構文で行うことができます。
-/
Expand Down
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
- [ToString: 文字列に変換](./TypeClass/ToString.md)

- [](./Type/README.md)
- [Char: Unicode 文字](./Type/Char.md)
- [Prop: 命題全体](./Type/Prop.md)
- [String: 文字列](./Type/String.md)
- [Type: 型全体](./Type/Type.md)
Expand Down