-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathChar.lean
42 lines (34 loc) · 1.1 KB
/
Char.lean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
fields:
Char.val : UInt32
Char.valid : self.val.isValidChar
constructor:
Char.mk (val : UInt32) (valid : val.isValidChar) : Char
-/
#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