ΠΡΠ° ΡΡ Π΅ΠΌΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌ set_attribute. Π ΠΊΠ»Π°ΡΡΠ΅ DEVICE ΠΈΠΌΠ΅Π΅ΠΌ:
class DEVICE feature
alternate: like Current
set_alternate (a: like Current) is
-- ΠΡΡΡΡ a - Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
do
alternate := a
end
... ΠΡΠΎΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ...
end
ΠΡΠ΅ ΡΠ°Π· ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ
Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠΏΠ°.
Π‘Π½Π°ΡΠ°Π»Π° ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΠΈΠΏΡ Π±ΡΠ»ΠΈ Π΄Π»Ρ Π½Π°Ρ Π΅Π΄ΠΈΠ½Ρ, ΠΈ ΡΡΠΎ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ - ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΠΏΡΠ½ΠΊΡ ΠΠ-ΠΌΠ΅ΡΠΎΠ΄Π°, - ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ, Ρ ΠΎΡΡ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π² ΠΊΠ»Π°ΡΡΡ ΡΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ ΠΈ Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Ρ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΠ΄ΠΎΠ²ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ LIST [INTEGER] Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ LIST. ΠΠ° ΠΊΠ»Π°ΡΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠ΅ ΡΠΈΠΏΡ; ΠΈ Π΄Π»Ρ Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ: Π΄Π»Ρ expanded SOME_CLASS [...] Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ - SOME_CLASS.
ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² - ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΄Π²ΡΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ°. ΠΠ°Π·ΠΎΠ²ΡΠΌ Π΄Π»Ρ like anchor ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΈΠΏΠ° ΡΡΡΠ½ΠΎΡΡΠΈ anchor Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠ»ΠΈ anchor Π΅ΡΡΡ Current, Π±Π°Π·ΠΎΠ²ΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΊΠ»Π°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ.
ΠΡΠ°Π²ΠΈΠ»Π° ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠ°Ρ
Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ like anchor Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° anchor ΠΊΠ°ΠΊ ΡΡΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ°Π»ΠΎ Π±Ρ ΡΠΈΠΊΠ»Ρ Π² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ .
ΠΠ½Π°ΡΠ°Π»Π΅ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠΎΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (anchored anchor) Π±ΡΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, Π½ΠΎ ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ Π»ΠΈΠ±Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΈΠ΄Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΈΠΏΠΎΠ² Π±ΠΎΠ»ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ.ΠΡΡΡΡ T - ΡΠΈΠΏ anchor (ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ, Π΅ΡΠ»ΠΈ anchor Π΅ΡΡΡ Current). Π’ΠΎΠ³Π΄Π° ΡΠΈΠΏ like anchor ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Ρ T.
ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎ: Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ like anchor, - ΡΡΠΎ ΠΎΠ½ ΡΠ°ΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Ρ Π½ΠΈΠΌ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΈΠΏ T. ΠΡΠ»ΠΈ Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡΠ» Π²Π΅ΡΠ΅Π½:
anchor, other: T; x: like anchor
...
create other
x := other -- ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
ΡΠΎ Π² ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π³Π΄Π΅ anchor ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ Π½Π° U, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ T, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ΅, ΡΡΡΠ½ΠΎΡΡΠΈ x Π±ΡΠ» Π±Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° T, Π° Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° U ΠΈΠ»ΠΈ U-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
ΠΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ x ΠΎΠΏΠΎΡΠ½ΠΎ-ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ y, Π΅ΡΠ»ΠΈ x Π΅ΡΡΡ y ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ like z, Π³Π΄Π΅ z ΠΏΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΎΠΏΠΎΡΠ½ΠΎ-ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ y. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ: x := anchor, anchor := x, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΏΠΎΡΠ½ΠΎ-ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ (anchor-equivalent) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ.
ΠΡΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅
r (other: like Current)
ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, b Π² a.r(b), Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΠΎΡΠ½ΠΎ-ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ a.
ΠΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ
ΠΠ΅ Π²ΡΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° x: A Π² ΠΊΠ»Π°ΡΡΠ΅ A ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΡ Π½Π° x: like Current ΠΈ Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π΄Π΅Π»Π°ΡΡ ΠΎΠΏΠΎΡΠ½ΡΠΌ, Π° Π΄ΡΡΠ³ΠΎΠΉ - Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠΌ.
ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ - ΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ ΡΠΈΠΏΠ° ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΎΠ½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠ»Ρ: ΠΎΠ±ΡΡΠ²ΠΈΠ² ΡΠΈΠΏ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ like anchor, Π²Ρ ΡΠ΅ΡΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ (ΠΊΠΎΠ»Ρ ΡΠΊΠΎΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ, Π° Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΡΠ°ΠΌ). ΠΠΎΠΊΠ° Π½Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅, ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π°: Π΅ΡΠ»ΠΈ x ΡΠΈΠΏΠ° T, ΡΠΎ ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ, Π²Π²Π΅Π΄Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΠΏ U.
ΠΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Ρ. ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠ»Π΅Π΄ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½ΠΎ ΠΎΠ½ΠΎ ΡΠ°Π· ΠΈ Π½Π°Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π°Ρ ΠΊ ΡΠΈΠΏΡ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ "ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π²ΡΠ±ΠΎΡΠ°". (Π ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠΌΡΡΠ»Π΅ Π€Π°ΡΡΡ ΠΎΠ±ΡΡΠ²ΠΈΠ» ΡΠ΅Π±Ρ like ΠΠ΅ΡΠΈΡΡΠΎΡΠ΅Π»Ρ.)
ΠΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ first_child Π΄Π»Ρ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠ½Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π΄Π΅ΡΠ΅Π²Π°. (ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π° ΠΎΠ½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ first_element Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠΎΠ², ΡΠΈΠΏΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ CELL [G] ΠΈΠ»ΠΈ LINKABLE [G].) ΠΠ»Ρ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΠΌΠ΅ΡΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅:
first_child: like Current
ΠΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ»Π°ΡΡ Π΄Π΅ΡΠ΅Π²Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² (ΠΈΡ ΡΠ·Π»ΠΎΠ²): UNARY_TREE (ΡΠ·Π»Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ½ΠΎΠΌ), BINARY_TREE (ΡΠ·Π»Ρ Ρ Π΄Π²ΡΠΌΡ ΡΡΠ½ΠΎΠ²ΡΡΠΌΠΈ) ΠΈ BOUNDED_ARITY_TREE (ΡΠ·Π»Ρ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΡΠ½ΠΎΠ²Π΅ΠΉ). ΠΡΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠΈ first_child Π²ΡΠ΅ ΡΡΠ½ΠΎΠ²ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΡΡΠΎΠ²ΡΠΊΠΈΠΉ ΡΠΈΠΏ.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΡ ΡΡΡΡΠΊΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Ρ ΡΠ½Π°ΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π±Π΅Π· Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ:
first_child: TREE [G]
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Ρ ΡΠ·Π»Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π²Ρ, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΊΠ»Π°ΡΡ TREE Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ ΠΎΡ Π½Π΅Π³ΠΎ HOMOGENEOUS_TREE, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ first_child ΠΊΠ°ΠΊ
first_child: like Current
ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² Π΄Π΅ΡΠ΅Π²Π°.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ
Π£ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π½Π΅ΡΡΠ½ΠΎΡΡΠΈ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ ΡΠΈΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΠ΅ΠΌΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ ΡΠΈΠΏΠΎΠ².
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ, ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ ΠΏΠΎΠΊΠ° Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ Π‘ΠΊΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΊΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ°: ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, ΡΠ°Π·ΡΠ΅ΡΠ°Ρ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΡΠΉ ΡΠΊΡΠΏΠΎΡΡ, ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°ΠΊΡΡΡΡΠΌ.
ΠΠΎΠ΅-ΡΡΠΎ ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎ ΡΡΠ°ΡΡΡΠΎΠΌ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎΡΠΎΠΌΠΊΡ? ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ - ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ. ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ, ΡΠΊΡΠΏΠΎΡΡ - ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ»Π°ΡΡ B ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡΡΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² f, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠΌ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° A. ΠΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ:
[x]. f ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ A ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ B (Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ);
[x]. f ΡΠΊΡΡΡΠΎ Π² A ΠΈ B;
[x]. f ΡΠΊΡΡΡΠΎ Π² A, Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π² B;
[x]. f ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π² A, Π½ΠΎ ΡΠΊΡΡΡΠΎ Π² B.
ΠΡΠ°Π²ΠΈΠ»ΠΎ Π³Π»Π°ΡΠΈΡ: ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ f ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡ ΡΡΠ°ΡΡΡ ΡΠΊΡΠΏΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ» Π½Π°Π΄Π΅Π»Π΅Π½ Π² A. ΠΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ export Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class B inherit
A
export {NONE} f end
-- Π‘ΠΊΡΡΡΡ f (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ A)
...
ΠΈΠ»ΠΈ
class B inherit
A
export {ANY} f end
-- ΠΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ f (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΊΡΡΡΡΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ A)
...
ΠΈΠ»ΠΈ
class B inherit
A
export {X, Y, Z} f end
-- Π‘Π΄Π΅Π»Π°ΡΡ f Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ