ΠΡ ΡΡΠ°ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΈΡΡ ΡΠ»Π΅Π²Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠΈ ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΡΠΏΠ΅Ρ Π°. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠΈ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nothing. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° ΡΡΠ°ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΈΡ ΡΠΏΡΠ°Π²Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ Π²ΡΡ ΡΡΠ·Π½ΠΎΠ²Π°. ΠΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ±ΠΎΠΆΠ΅ΡΡΠ²Π° Π² ΡΠΈΠΌΠΏΠ°ΡΠΈΡΠ½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ >>= ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠ½Π°Π΄Π° Maybe ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΌΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΊΠΎΠ½ΡΠΈΡΡΡΡ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ >>= Π΄Π»Ρ ΡΠΈΠΏΠ° Maybe ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, ΡΠ°Π²Π½ΠΎ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nothing, ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ Nothing, ΠΎΠ½Π° Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Nothing. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°Π²Π½ΠΎ Nothing, ΠΎΠ½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Just.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΡΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠ΄Π°ΡΡ. ΠΡΠ΅Π²ΡΠ°ΡΠ°Ρ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Maybe ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ >>=, ΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°ΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ. ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ >>= Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ ΡΠ²Π»ΡΠ»ΠΎΡΡ ΡΠΎ, ΡΡΠΎ Π½Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ Π½Π΅ΡΡΠΏΠ΅Ρ ΠΎΠΌ Π² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ ΠΊ ΡΠ°ΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ΅Π³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π»Π°ΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π½Π΅ΡΡΠΏΠ΅Ρ Π°.
ΠΠΎΡΠ°ΡΠΈΡ do
ΠΠΎΠ½Π°Π΄Ρ Π² ΡΠ·ΡΠΊΠ΅ Haskell Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π·Π°Π²Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π½ΠΎΡΠ°ΡΠΈΡ doΒ». ΠΡ ΡΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ do Π² Π³Π»Π°Π²Π΅ 8, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ°ΠΊ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π½ΠΎΡΠ°ΡΠΈΡ do ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ½Π°Π΄Ρ. ΠΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΡΠ°ΡΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Β«ΡΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅Β» ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎΡ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
ghci> Just 3 >>= (\x β> Just (show x ++ "!"))
Just "3!"
ΠΡΠΎ ΠΌΡ ΡΠΆΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ»ΠΈ! ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, β Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ x ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 3 Π²Π½ΡΡΡΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π½Π°Ρ Π±ΡΠ» Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π²ΡΠ·ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>= Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ? ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅:
ghci> Just 3 >>= (\x β> Just "!" >>= (\y β> Just (show x ++ y)))
Just "3!"
ΠΠ³Π°-Π°, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ >>=! ΠΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Just "!" Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ \y β> Just (show x ++ y). ΠΠ½ΡΡΡΠΈ ΡΡΠΎΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ y ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ "!". ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ x ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π²Π΅Π½ 3, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΌΠ½Π΅ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ:
ghci> let x = 3; y = "!" in show x ++ y
"3!"
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>= ΡΠ²Π»ΡΡΡΡΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π½Π΅ΡΠ΄Π°ΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ Π½Π° Π½Π΅ΡΠ΄Π°ΡΡ:
ghci> Nothing >>= (\x β> Just "!" >>= (\y β> Just (show x ++ y))) Nothing
ghci> Just 3 >>= (\x β> Nothing >>= (\y β> Just (show x ++ y)))
Nothing
ghci> Just 3 >>= (\x β> Just "!" >>= (\y β> Nothing))
Nothing
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Nothing ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Nothing. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Just 3 ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ x ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ 3. ΠΠΎ ΠΏΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nothing Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Nothing, ΡΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Nothing Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΡΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ let, ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ΄ΡΡ ΡΠ΅ΡΡ, ΡΠ²Π»ΡΡΡΡΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΈΠ΄Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Maybe Π·Π°Π½ΠΈΠΌΠ°Π»ΠΎ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ:
foo :: Maybe String
foo = Just 3 >>= (\x β>
Just "!">>= (\y β>
Just (show x ++ y)))
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅ΡΠ΅ΡΡ Π½Π°Ρ ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡΠΈΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ·ΡΠΊ Haskell ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ Π½ΠΎΡΠ°ΡΠΈΡ do. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π²ΠΎΡ ΡΠ°ΠΊ:
foo :: Maybe String
foo = do
x <β Just 3
y <β Just "!"
Just (show x ++ y)
ΠΠΎΠ³Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° Maybe Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Ρ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Maybe Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Just ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Nothing. ΠΠΎΡ ΠΊΠ»Π°ΡΡΠ½ΠΎ!.. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ, ΡΠ°Π²Π½ΠΎ Nothing, Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ do Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π΅ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nothing. ΠΡ Π²ΡΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΡΠΆΡ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²Π° ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΠΈΠ΄ΡΡΠ΅ΠΌ Ρ ΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π° ΠΏΠ»Π΅ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>=.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ do β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅Π»Π°ΠΉ ΠΊΠ°ΠΊ Ρ
Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ do ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ°, Π½Π΅ ΡΠ²Π»ΡΡΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ let, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» <β. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Maybe String ΠΈ ΠΌΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Ρ ΠΊ ΠΎΠ±ΡΠ°Π·ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° <β, ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ String ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ >>= Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ do β ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ Just (show x ++ y) Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ <β Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ do ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>=, ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ ΡΠΌΡΡΠ»Π°. ΠΠ°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ΅Π³ΠΎ ΡΠΊΠ»Π΅Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΈΡΡΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½Π΅ΡΠ΄Π°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ:
ghci> Just 9 >>= (\x β> Just (x > 8))
Just True
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»Π΅Π²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ >>= ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Just, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 9, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Just True. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Π² Π½ΠΎΡΠ°ΡΠΈΠΈ do ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
marySue :: Maybe Bool
marySue = do
x <β Just 9
Just (x > 8)
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°, Π»Π΅Π³ΠΊΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ do ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠΌΠΈ Ρ Π½ΠΈΠΌ.
ΠΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°Π½Π°ΡΠΎΡ ΠΎΠ΄ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΡΠ°ΡΠΈΠΈ do. Π€ΡΠ½ΠΊΡΠΈΠΈ landLeft ΠΈ landRight ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΡ ΠΈ ΡΠ΅ΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΡΠ΅ΡΡ, ΠΎΠ±ΡΡΠ½ΡΡΡΠΉ Π² Just. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°Π½Π°ΡΠΎΡ ΠΎΠ΄Π΅Ρ ΡΠΎΡΠΊΠ°Π»ΡΠ·ΡΠ²Π°Π΅Ρ, ΠΈ ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nothing. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ >>= Π΄Π»Ρ ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π·Π°Π²ΠΈΡΠ΅Π» ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±Π»Π°Π΄Π°Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π½Π΅ΡΠ΄Π°ΡΠΈ. ΠΠ΄Π΅ΡΡ Π΄Π²Π΅ ΠΏΡΠΈΡΡ ΠΏΡΠΈΠ·Π΅ΠΌΠ»ΡΡΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π·Π°ΡΠ΅ΠΌ Π΄Π²Π΅ ΠΏΡΠΈΡΡ β Ρ ΠΏΡΠ°Π²ΠΎΠΉ, Π° ΠΏΠΎΡΠΎΠΌ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠ° β ΡΠ½ΠΎΠ²Π° Ρ Π»Π΅Π²ΠΎΠΉ:
routine :: Maybe Pole
routine = do
start <β return (0, 0)
first <β landLeft 2 start
second <β landRight 2 first
landLeft 1 second
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΎΠΊΠΎΠ½ΡΠΈΡΡΡ Π»ΠΈ ΡΡΠΎ ΡΠ΄Π°ΡΠ½ΠΎ Π΄Π»Ρ ΠΡΠ΅ΡΠ°:
ghci> routine
Just (3,2)
ΠΠΊΠΎΠ½ΡΠΈΠ»ΠΎΡΡ ΡΠ΄Π°ΡΠ½ΠΎ!
ΠΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ²Π½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π²ΡΠ·ΠΎΠ²Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>=, ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ return (0, 0) >>= landLeft 2, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ landLeft ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Maybe. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ do ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Pole ΡΡΠ½ΠΊΡΠΈΡΠΌ landLeft ΠΈ landRight. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠ²ΡΠ·Π°Π»ΠΈ Π½Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Maybe, ΡΠΎ start Π±ΡΠ» Π±Ρ ΡΠ°Π²Π΅Π½ (0, 0), first Π±ΡΠ» Π±Ρ ΡΠ°Π²Π΅Π½ (2, 0) ΠΈ Ρ. Π΄.