![見出し画像](https://assets.st-note.com/production/uploads/images/164188316/rectangle_large_type_2_fe37bcaea562395359d89e853ce45714.png?width=1200)
TOPOS-Ξ を学ぼう!その3「shapeとmapping」
えっ?いい気に二つ?
いつまでも甘くないですよ。
というわけでもないです。spaceがなんとなくわかったら、shepeとmappingも小野豆とわかります。spaceが入れ物で、shapeが中に入るもの、mappinguはそれらのふるまいを示します。spaceの中にはspae,shape,mappinguを入れることができ、shapeの中にはshapeとmappingを入れることができます。なプロパティ(性質)がそれぞれ違いますのでご注意を。
そのあたりも経験値として手に入れるのが楽ではないかと思います。とにかく書いてみることが大事です。別にTOPOS-Ξに限らず言語習得はみなそうです。(ま、会話の場合は書くよりも聞くのが大事かなとは思いますが)
教室に黒板を追加してみましょう。黒板は教室の`shape`として定義し、書き込みや消去などの操作も含めます。
「教室に黒板設置して」
space Classroom {
properties {
// 基本的な空間プロパティ
continuous: Topology<Boolean> = true
dimension: Topology<Number> = 3
observable: Topology<Boolean> = true
}
// 教室の基本構造
shape RoomStructure {
properties {
area: Number
height: Number
capacity: Number
}
}
// 黒板の定義
shape Blackboard {
properties {
width: Number = 360 // 黒板の幅(cm)
height: Number = 120 // 黒板の高さ(cm)
position: Vector3D // 壁上の位置
written_content: Collection<Writing> // 板書内容
clean: Boolean = true // 黒板の状態
}
// 板書操作
mapping write() {
properties {
continuous: Boolean = true // 連続的な書き込み
}
path {
verify_space -> // 書き込みスペースの確認
pick_chalk -> // チョークを取る
write_content -> // 内容を書く
release_chalk // チョークを置く
}
}
// 黒板消し操作
mapping erase() {
properties {
continuous: Boolean = true // 連続的な消去
}
path {
pick_eraser -> // 黒板消しを取る
clean_surface -> // 表面を消す
dust_eraser -> // 黒板消しの粉を落とす
replace_eraser // 黒板消しを戻す
}
}
// 状態の確認
mapping check_state() {
path {
inspect_surface -> // 表面状態の確認
verify_cleanliness -> // 清潔さの確認
assess_writability // 書き込み可能性の評価
}
}
}
// 黒板への移動
mapping approach_blackboard() {
properties {
continuous: Boolean = true
}
path {
verify_path -> // 経路確認
walk_to_blackboard -> // 黒板まで移動
position_for_writing // 書き込み位置に立つ
}
}
}
この定義では以下の要素を追加しました:
Blackboardシェイプ
物理的な属性(幅、高さ、位置)
板書内容の管理
クリーン状態の追跡
書き込み操作
チョークの使用
連続的な書き込み動作
適切な手順の定義
消去操作
黒板消しの使用
表面のクリーニング
道具の適切な管理
状態管理
表面状態の確認
書き込み可能性の評価
清潔さの維持
アクセス操作
黒板への移動
適切な位置取り
安全な経路確保
これにより、教室空間内での黒板の使用に関する基本的な操作と状態管理が可能になります。
ここでは、言及していないんですが、shapeのプロパティには、停止しておくべきプロパティがあります。
Shape プロパティには、以下の主要な要素が含まれます。
deformable: この形状が変形可能かどうかを指定します。変形可能な形状は、プログラムの実行中にその構造を変えることができます。
coherent: 量子形状の場合、このプロパティは量子コヒーレンスを保持しているかどうかを示します。量子コヒーレンスは、量子計算において非常に重要な概念であり、量子状態の重ね合わせやエンタングルメントといった現象に関わります。
persistent: この形状がプログラムの実行中に永続的に存在するかどうかを指定します。永続的な形状は、プログラム全体を通して参照することができます。
これらのプロパtぇ位は、プログラム記述するときに、当たり前に定義の中に含めて億べきです。
Mapping プロパティには、以下の主要な要素が含まれます。
continuous: この変換が連続関数であるかどうかを指定します。連続関数とは、入力の小さな変化が、出力の小さな変化にしか繋がらないような関数です。
quantum: この変換が量子的な操作を含むかどうかを指定します。量子的な操作は、重ね合わせやエンタングルメントといった量子力学的な現象を利用します。
reversible: この変換が可逆であるかどうかを指定します。可逆な変換は、元の状態に戻すことができる変換です。
このあたりは、おいおい図ってくるはずです。
quantum系は、量子計算がなんとなくわかれば、意味がわかりますし、他のプロパティは、プログラムを改定いるうちに、意味が分かってきます。本当は、もっと多くのプロパティを設定しておいたほうが、柔軟性や応用性が高くなるのですが、言語仕様としては、シンプルさを失ってしまうので、極限まで(そのつもりではあるんです)削りました。必要であれば、上記の通り、定義していけばいいだけです。定義の意味はかなり広いですけど、それはまぁまた別のお話で。