ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅, ΠΈΠ· ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠ΅ΠΆΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ°Π·ΡΡΡ ΡΠΈΠΏ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΡΡΠ΅ΠΆ β ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΠΏΠ°ΡΠ΅, ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΡΡΠΎΠΉΠΊΠ΅, ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΡΠ΅ΡΠ²ΡΡΠΊΠ΅, ΠΈ Ρ. Π΄.
ΠΠ°ΠΊ ΠΈ ΡΠΏΠΈΡΠΊΠΈ, ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΠΌ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² (Ρ ΠΎΡΡ ΡΠΏΠΈΡΠΊΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ).
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΈ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Π½Π΅ Π±ΡΠ²Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ. ΠΡΠ»ΠΈ Π²Π΄ΡΠΌΠ°ΡΡΡΡ, ΡΡΠΎ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΡΡΠ΅ΠΆ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π±ΡΠ» Π±Ρ ΠΏΡΠΎΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ Π΄Π°Π²Π°Π» Π±Ρ Π½Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ[6].
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ
ΠΠΎΡ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠΈ:
β’ fst β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ghci> fst (8,11)
8
ghci> fst ("ΠΠ°Ρ", False)
"ΠΠ°Ρ"
β’ snd β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ!
ghci> snd (8,11)
11
ghci> snd ("ΠΠ°Ρ", False)
False
ΠΠ ΠΠΠΠ§ΠΠΠΠ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠ°ΡΠ°ΠΌΠΈ. ΠΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ, ΡΠ΅ΡΠ²ΡΡΠΊΠ°ΠΌΠΈ, ΠΏΡΡΡΡΠΊΠ°ΠΌΠΈ ΠΈ Ρ. Π΄. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Ρ, β zip. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½, Π³ΡΡΠΏΠΏΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΠ°ΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ, Π½ΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ zip:
ghci> zip [1,2,3,4,5] [5,5,5,5,5]
[(1,5),(2,5),(3,5),(4,5),(5,5)]
ghci> zip [1 .. 5] ["ΠΎΠ΄ΠΈΠ½", "Π΄Π²Π°", "ΡΡΠΈ", "ΡΠ΅ΡΡΡΠ΅", "ΠΏΡΡΡ"]
[(1,"ΠΎΠ΄ΠΈΠ½"),(2,"Π΄Π²Π°"),(3,"ΡΡΠΈ"),(4,"ΡΠ΅ΡΡΡΠ΅"),(5,"ΠΏΡΡΡ")]
Π€ΡΠ½ΠΊΡΠΈΡ Β«ΡΠΏΠ°ΡΠΈΠ²Π°Π΅ΡΒ» ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ΄ΡΡ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ, Π²ΡΠΎΡΠΎΠΉ β ΡΠΎ Π²ΡΠΎΡΡΠΌ ΠΈ Ρ. Π΄. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΡΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ, ΡΡΠ½ΠΊΡΠΈΡ zip ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ . Π ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΠΏΠΈΡΠΊΠΎΠ² Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ?
ghci> zip [5,3,2,6,2,7,2,5,4,6,6] ["Ρ","Π½Π΅","ΡΠ΅ΡΠ΅ΠΏΠ°Ρ Π°"]
[(5,"Ρ"),(3,"Π½Π΅"),(2,"ΡΠ΅ΡΠ΅ΠΏΠ°Ρ Π°")]
ΠΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ΅Π·Π°Π΅ΡΡΡ Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ! ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ·ΡΠΊ Haskell Π»Π΅Π½ΠΈΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ:
ghci> zip [1..] ["ΡΠ±Π»ΠΎΠΊΠΎ", "Π°ΠΏΠ΅Π»ΡΡΠΈΠ½", "Π²ΠΈΡΠ½Ρ", "ΠΌΠ°Π½Π³ΠΎ"]
[(1,"ΡΠ±Π»ΠΎΠΊΠΎ"),(2,"Π°ΠΏΠ΅Π»ΡΡΠΈΠ½"),(3,"Π²ΠΈΡΠ½Ρ"),(4,"ΠΌΠ°Π½Π³ΠΎ")]
Π ΠΏΠΎΠΈΡΠΊΠ°Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠΌ Π³Π»Π°Π²Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ³ΠΎΠ΄ΡΡΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ Π²ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ:
β’ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ;
β’ Π΄Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½Π° 10;
β’ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° (ΡΠΎ Π΅ΡΡΡ ΡΡΠΌΠΌΠ° Π΄Π»ΠΈΠ½ ΡΡΠΎΡΠΎΠ½) ΡΠ°Π²Π΅Π½ 24.
Π’ΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ ΡΠ³Π»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΠΌΡΠΌ (ΡΠ°Π²Π΅Π½ 90 Π³ΡΠ°Π΄ΡΡΠ°ΠΌ). ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ: Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π²Π΅ΡΡΠΈ Π² ΠΊΠ²Π°Π΄ΡΠ°Ρ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ ΠΏΡΡΠΌΠΎΠΉ ΡΠ³ΠΎΠ», ΡΠΎ ΡΡΠΌΠΌΠ° ΡΡΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°Π²Π½ΠΎΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΌΡ ΡΠ³Π»Ρ. ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠ΅ ΠΏΡΡΠΌΠΎΠΉ ΡΠ³ΠΎΠ», ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ a ΠΈ b; ΡΡΠΎΡΠΎΠ½Π°, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°Ρ ΠΏΡΡΠΌΠΎΠΌΡ ΡΠ³Π»Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° Π±ΡΠΊΠ²ΠΎΠΉ c. ΠΡΠ° ΡΡΠΎΡΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π³ΠΈΠΏΠΎΡΠ΅Π½ΡΠ·ΠΎΠΉ.
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠΈΠΌ Π²ΡΠ΅ ΡΡΠΎΠΉΠΊΠΈ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½Ρ 10:
ghci> let triples = [(a,b,c) | c <β [1..10], b <β [1..10], a <β [1..10]]
ΠΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ ΡΡΠΈ ΡΠΏΠΈΡΠΊΠ°, ΠΈ Π½Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΈΡ Π² ΡΡΠΎΠΉΠΊΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ·ΠΎΠ²Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ triples Π² GHCi, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΡΡΡΡΠΈ ΡΡΠΎΠ΅ΠΊ. Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄Π»ΠΈΠ½Π°ΠΌ ΡΡΠΎΡΠΎΠ½ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΡΠ² Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π° b Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π³ΠΈΠΏΠΎΡΠ΅Π½ΡΠ·Ρ, ΠΈ ΡΡΠΎΡΠΎΠ½Π° a Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ b.
ghci> let rightTriangles = [ (a,b,c) | c <β [1..10], b <β [1..c], a <β [1..b], a 2 + b 2 == c 2]
ΠΠ ΠΠΠΠ§ΠΠΠΠ. Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° GHCi Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ . ΠΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Π½Π°ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ°Π»ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ½ΠΈΠ³Π° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π±Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΠΎΠΊΠΎΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ, ΡΡΠΎ Π΄Π»Ρ Π½Π΅Ρ Π²Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΊΡΠΏΠΈΡΡ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠΈΠΉ ΠΊΠ½ΠΈΠΆΠ½ΡΠΉ ΡΠΊΠ°Ρ!
ΠΠΎΡΡΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π΅Π½ 24.
ghci> let rightTriangles' = [ (a,b,c) | c <β [1..10], b <β [1..c], a <β [1..b], a 2 + b 2 == c 2, a+b+c == 24]
ghci> rightTriangles'
[(6,8,10)]
ΠΠΎΡ ΠΈ ΠΎΡΠ²Π΅Ρ! ΠΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡ Π±Π΅ΡΡΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΈΠ»ΡΡΡΡΠ΅ΡΠ΅ ΠΈΡ , ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
2
Π’ΠΈΠΏΡ ΠΈ ΠΊΠ»Π°ΡΡΡ ΡΠΈΠΏΠΎΠ²
ΠΠΎΠ²Π΅ΡΡ Π² ΡΠΈΠΏΡ
ΠΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Haskell ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ. Π’ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β ΡΡΠΎ Π·Π°Π»ΠΎΠ³ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ Π±ΡΠ»Π΅Π²ΡΠΊΠΈΠΉ ΡΠΈΠΏ Π½Π° ΡΠΈΡΠ»ΠΎ, ΡΠΎ ΠΎΠ½Π° Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ.
Π Ρ ΠΎΡΠΎΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΆ Π»ΡΡΡΠ΅ Π»ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ, ΠΊΠ°ΠΊ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ! ΠΡΠ΅ΠΌΡ Π² ΡΠ·ΡΠΊΠ΅ Haskell Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² Java ΠΈΠ»ΠΈ Pascal, Ρ Haskell Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ². ΠΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ, ΡΠΎ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ. Π―Π·ΡΠΊ Haskell ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠΎ ΡΠ°ΠΌ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ²Π½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ·ΡΠΊΠ°, Π»ΠΈΡΡ Π²ΡΠΊΠΎΠ»ΡΠ·Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ² ΠΎ ΡΠΈΠΏΠ°Ρ . Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² β ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΡ Haskell.
Π’ΠΈΠΏ β ΡΡΠΎ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠ»ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ, ΠΊ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ True β Π±ΡΠ»Π΅Π²ΠΎ, "ΠΏΡΠΈΠ²Π΅Ρ" β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, ΠΈ Ρ. Π΄.
Π―Π²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
Π ΡΠ΅ΠΉΡΠ°Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ GHCi Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ :t, ΠΊΠΎΡΠΎΡΠ°Ρ, Π΅ΡΠ»ΠΈ Π·Π° Π½Π΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠ΄Π°ΡΡ Π½Π°ΠΌ ΡΠΈΠΏ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ. ΠΡΠ°ΠΊβ¦
ghci> :t 'a'
'a' :: Char
ghci> :t True
True :: Bool
ghci> :t "ΠΠ ΠΠΠΠ’!"
"ΠΠ ΠΠΠΠ’!" :: [Char]
ghci> :t (True, 'a')
(True, 'a') :: (Bool, Char)
ghci> :t 4 == 5
4 == 5 :: Bool
ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ :t ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡ :: ΠΈ ΠΈΡ ΡΠΈΠΏ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ :: ΠΎΠ·Π½Π°ΡΠ°ΡΡ: Β«ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏΒ». Π£ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΡΠ΅Π³Π΄Π° Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅. Π‘ΠΈΠΌΠ²ΠΎΠ» 'a', ΠΊΠ°ΠΊ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ Char. ΠΠ΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ°Π·ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Β«characterΒ» β ΡΠΈΠΌΠ²ΠΎΠ». ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° True ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ Bool. ΠΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ½ΠΎβ¦ ΠΠ΄ΡΠΌ Π΄Π°Π»ΡΡΠ΅.
ΠΡΡΠ»Π΅Π΄ΡΡ ΡΠΈΠΏ "ΠΠ ΠΠΠΠ’!", ΠΏΠΎΠ»ΡΡΠΈΠΌ [Char]. ΠΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΏΠΈΡΠΎΠΊ β ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ Β«ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²Β». Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ Π»ΡΠ±ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ. Π’Π°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (True, 'a') ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ (Bool, Char), ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ('a','b','c') Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ (Char, Char, Char). ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 4==5 Π²ΡΠ΅Π³Π΄Π° Π²Π΅ΡΠ½ΡΡ False, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΡΠΈΠΏ β Bool.
Π£ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ ΡΠΈΠΏΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΡ ΡΠΈΠΏ ΡΠ²Π½ΠΎ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΡΠΌΠΎΠΉ, ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΡΠ»ΡΡΠ°ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄Π΅ΡΡ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ Π½Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΎΠΌΠ½ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΏΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅: ΠΎΠ½ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π» ΡΡΡΠΎΠΊΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΏΠΈΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ? ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°:
removeNonUppercase :: [Char] β> [Char]
removeNonUppercase st = [ c | c <β st, c `elem` ['Π'..'Π―']]
Π€ΡΠ½ΠΊΡΠΈΡ removeNonUppercase ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ [Char] β> [Char]. ΠΡΠ° Π·Π°ΠΏΠΈΡΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
Π ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²? ΠΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΠ°Ρ ΠΈΡ :
addThree :: Int β> Int β> Int β> Int