Π€ΡΠ½ΠΊΡΠΈΡ return ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΠΏΠ° Maybe ΠΎΠ½Π° Π½Π΅ Π²Π½ΠΎΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ΡΡΠΏΠ΅Ρ Π° Π² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ; Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² β Π½Π΅ Π²Π½ΠΎΡΠΈΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ.
ΠΠΎΡ ΠΏΡΠΎΠ±Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ½Π°Π΄:
ghci> Just "Π΄Π²ΠΈΠ³Π°ΠΉΡΡ Π΄Π°Π»ΡΡΠ΅" >>= (\x β> return x)
Just "Π΄Π²ΠΈΠ³Π°ΠΉΡΡ Π΄Π°Π»ΡΡΠ΅"
ghci> [1,2,3,4] >>= (\x β> return x)
[1,2,3,4]
ghci> putStrLn "ΠΠ°Ρ !" >>= (\x β> return x)
ΠΠ°Ρ !
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ >>= Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
xs >>= f = concat (map f xs)
ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠΏΠΈΡΠΎΠΊ [1,2,3,4] ΡΡΠ½ΠΊΡΠΈΠΈ return, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ [1,2,3,4], ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ² [[1],[2],[3],[4]]. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½ΠΈΡΡΠ΅ΡΡΡ, ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π°Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΠ΅Π²ΠΎΠ΅ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²ΠΎ ΠΈ ΠΏΡΠ°Π²ΠΎΠ΅ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²ΠΎ ΡΠ²Π»ΡΡΡΡΡ, ΠΏΠΎ ΡΡΡΠΈ, Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ return. ΠΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΠΈ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π»Π°, ΠΈΠΌΠ΅Π»ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
ΠΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΡ
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°ΠΊΠΎΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ >>=, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Ρ. Π ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (m >>= f) >>= g β ΡΠΎΡΠ½ΠΎ ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ m >>= (\x β> f x >>= g).
ΠΠΌ-ΠΌ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ? Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, m, ΠΈ Π΄Π²Π΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, f ΠΈ g. ΠΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (m >>= f) >>= g, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ m Π² ΡΡΠ½ΠΊΡΠΈΡ f, ΡΡΠΎ Π΄Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ g. Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ m >>= (\x β> f x >>= g) ΠΌΡ Π±Π΅ΡΡΠΌ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ f x ΡΡΠ½ΠΊΡΠΈΠΈ g. ΠΠ΅Π»Π΅Π³ΠΊΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ±Π΅ ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π²Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ.
ΠΠΎΠΌΠ½ΠΈΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°Π½Π°ΡΠΎΡ ΠΎΠ΄ΡΠ° ΠΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΡΠ°Π»ΡΡ ΡΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΈΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡ ΠΏΡΠΈΠ·Π΅ΠΌΠ»ΡΠ»ΠΈΡΡ Π½Π° Π΅Π³ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΡ? Π§ΡΠΎΠ±Ρ ΡΠΈΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΡ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ:
ghci> return (0, 0) >>= landRight 2 >>= landLeft 2 >>= landRight 2
Just (2,4)
ΠΡ Π½Π°ΡΠ°Π»ΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Just (0, 0), Π° Π·Π°ΡΠ΅ΠΌ ΡΠ²ΡΠ·Π°Π»ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ landRight 2. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ»ΠΎ Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΈ Ρ. Π΄. ΠΡΠ»ΠΈ Π±Ρ Π½Π°Π΄Π»Π΅ΠΆΠ°Π»ΠΎ ΡΠ²Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎ Π² ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ghci> ((return (0, 0) >>= landRight 2) >>= landLeft 2) >>= landRight 2
Just (2,4)
ΠΠΎ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊ:
return (0, 0) >>= (\x β>
landRight 2 x >>= (\y β>
landLeft 2 y >>= (\z β>
landRight 2 z)))
ΠΡΠ·ΠΎΠ² return (0, 0) β ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Just (0, 0), ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΠ°Π·Π΅Ρ x ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (0, 0). Π€ΡΠ½ΠΊΡΠΈΡ landRight ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΡ ΠΈ ΡΠ΅ΡΡ (ΠΊΠΎΡΡΠ΅ΠΆ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΈΡΠ»Π°) β ΠΈ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Just (0, 2), ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΠ°Π·Π΅Ρ y ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π΅Π½ (0, 2). ΠΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΡΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΡ Π½Π΅ Π²Π΅ΡΠ½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Just (2, 4), ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ Ρ Π²Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΠ°ΠΆΠ΅Π½ ΠΈΡ ΡΠΌΡΡΠ». ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΠΎΠ½Π°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, f ΠΈ g:
(.) :: (b β> c) β> (a β> b) β> (a β> c)
f . g = (\x β> f (g x))
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ g ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ a β> b ΠΈ ΡΡΠ½ΠΊΡΠΈΡ f ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ b β> c, ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΠΌ ΠΈΡ Π² Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° a β> c, ΡΡΠΎΠ±Ρ Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅? Π§ΡΠΎ Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ Π±Ρ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ? ΠΡΠ»ΠΈ Π±Ρ Ρ Π½Π°Ρ Π±ΡΠ»Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° a β> m b, ΠΌΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏΠ° b β> m c, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ b, Π½Π΅ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅. Π§ΡΠΎΠ±Ρ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π΄ΠΎΡΡΠΈΡΡ Π½Π°ΡΠ΅ΠΉ ΡΠ΅Π»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ <=<:
(<=<) :: (Monad m) => (b β> m c) β> (a β> m b) β> (a β> m c)
f <=< g = (\x β> g x >>= f)
ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π²ΡΡ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
ghci> let f x = [x,-x]
ghci> let g x = [x*3,x*2]
ghci> let h = f <=< g
ghci> h 3
[9,-9,6,-6]
ΠΠ°Π΄Π½ΠΎ, Π²ΡΡ ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ. ΠΠΎ ΠΊΠ°ΠΊΠΎΠ΅ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ Π·Π°ΠΊΠΎΠ½Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ? ΠΡΠΎΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠΎΡ Π·Π°ΠΊΠΎΠ½ ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠ½ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΠΎΠ½ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ f <=< (g <=< h) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ (f <=< g) <=< h. ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΌΠΎΠ½Π°Π΄ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π·Π°ΠΊΠΎΠ½Π° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ <=<, ΡΠΎ Π·Π°ΠΊΠΎΠ½ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ f Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ f <=< return ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·Π²Π°ΡΡ f. ΠΠ°ΠΊΠΎΠ½ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π° Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ return <=< f ΡΠ°ΠΊΠΆΠ΅ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° f. ΠΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ f ΡΠ²Π»ΡΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΈ ΡΠΎΠ³Π΄Π° (f . g) . h Π±ΡΠ»ΠΎ Π±Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ f . (g . h), Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ f . id β Π²ΡΠ΅Π³Π΄Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ f, ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ id . f ΡΠΎΠΆΠ΅ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π»ΠΎΡΡ Π±Ρ ΠΎΡ Π²ΡΠ·ΠΎΠ²Π° f.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ Π² ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΌΠΎΠ½Π°Π΄Π°ΠΌΠΈ ΠΈ ΠΈΠ·ΡΡΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ½Π°Π΄Π° Maybe ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²Π°Ρ ΠΌΠΎΠ½Π°Π΄Π°. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π»ΡΡ ΠΊΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΡΡΡΡΡ ΠΌΠΎΠ½Π°Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ.
14
ΠΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½Π°Π΄
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠ½Π°Π΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° >>= ΠΈΠ»ΠΈ Π½ΠΎΡΠ°ΡΠΈΠΈ do ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°ΠΌΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ , Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π·Π° Π½Π°Ρ.
ΠΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΌΠΎΠ½Π°Π΄ΠΎΠΉ Maybe ΠΈ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠΏΠ΅Ρ Π° Π² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ . ΠΡ ΡΠ·Π½Π°Π»ΠΈ ΠΎ ΡΠΏΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ½Π°Π΄Π΅ ΠΈ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²Π½ΠΎΡΠΈΡΡ Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π² Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΌΠΎΠ½Π°Π΄Π΅ IO Π΄Π°ΠΆΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠ½Π°Π΄Π°!
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ Π΅ΡΡ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ½Π°Π΄Π°Ρ . ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΄Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΡΠ΅ΠΏΠΈΡ Π½Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ½Π°Π΄.
ΠΡΠ΅ ΠΌΠΎΠ½Π°Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° mtl. Π ΡΠ·ΡΠΊΠ΅ Haskell ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠ°ΠΊΠ΅Ρ mtl ΠΈΠ΄ΡΡ Π² ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ Ρ Haskell Platform, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ Ρ Π²Π°Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΆΠ΅ Π΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ°ΠΊ Π»ΠΈ ΡΡΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ghc-pkg list Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Haskell Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ; ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π»ΡΡΡΡΡ mtl, Π·Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ.
Writer? Π― ΠΎ Π½Π΅ΠΉ ΠΏΠΎΡΡΠΈ Π½Π΅ Π·Π½Π°Ρ!
ΠΡΠ°ΠΊ, ΠΌΡ Π·Π°ΡΡΠ΄ΠΈΠ»ΠΈ Π½Π°Ρ ΠΏΠΈΡΡΠΎΠ»Π΅Ρ ΠΌΠΎΠ½Π°Π΄ΠΎΠΉ Maybe, ΡΠΏΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ½Π°Π΄ΠΎΠΉ ΠΈ ΠΌΠΎΠ½Π°Π΄ΠΎΠΉ IO. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π² ΠΏΠ°ΡΡΠΎΠ½Π½ΠΈΠΊ ΠΌΠΎΠ½Π°Π΄Ρ Writer ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΡΡΡΠ΅Π»ΠΈΠΌ Π΅Ρ!
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Maybe ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΡ ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π° ΡΠΏΠΈΡΠΎΠΊ β Π΄Π»Ρ Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΌΠΎΠ½Π°Π΄Π° Writer ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²Π΅Π΄ΡΡΠ΅Π΅ ΡΠ΅Π±Ρ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π°. ΠΠΎΠ½Π°Π΄Π° Writer ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΆΡΡΠ½Π°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ½Π°Π±Π΄ΠΈΡΡ Π½Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π±Π°Π½Π΄ΠΈΡΠΎΠ² Π² Π±Π°Π½Π΄Π΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠ° Π±Π°Π½Π΄Π° ΠΊΡΡΠΏΠ½ΠΎΠΉ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
isBigGang :: Int β> Bool
isBigGang x = x > 9
ΠΡ Π° ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ True ΠΈΠ»ΠΈ False ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΡ ΠΆΡΡΠ½Π°Π»Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ΄Π΅Π»Π°Π»Π°? Π§ΡΠΎ ΠΆ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΅Ρ Π½Π°ΡΡΠ΄Ρ Ρ Π½Π°ΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Bool: