Π’Π΅Ρ Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ
Π‘ΠΏΠΈΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ Π½Π°ΡΠ°Π»Ρ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ — ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ — ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΡΠ°Π²Π½ΡΠΉ, ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 1: Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ ΡΠΈΡΠ»Π° 1, 2, 3, 4. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅Π³Π΄Π°… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π’Π΅Ρ Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ , ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π° Π² ΡΠ·ΡΠΊΠ°Ρ Java, C# ΠΈ C++ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΎΠΌ ΠΏΠ°ΡΠΊΠ°Π»Π΅Π²ΡΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ·ΡΠΊΠ΅ Haskell ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ, ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΆΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈ Π²ΡΡΠ΅. ΠΡΠ°Π²Π΄Π°, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΠ°ΡΠΊΠ°Π»Ρ Π² ΡΠ·ΡΠΊΠ΅ Haskell ΠΏΠΎΠ»Ρ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π»ΠΈΡΡ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅. ΠΠΌΠ΅Π½Π° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² ΡΠ·ΡΠΊΠ΅ Haskell, Π½ΠΎ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Haskell ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ.
Π‘ΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΡΠ·ΡΠΊΠ΅ Haskell Π½Π΅Ρ. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ Array, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Data. Array, Π»ΠΈΡΡ Π²Π½Π΅ΡΠ½Π΅ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΡΡΡΠΎΠ΅Π½Π° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π²Π΅Π»ΠΈ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½ΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΡΡΠΈΠ»Ρ. ΠΠ°ΡΠΎ Π² ΡΠ·ΡΠΊΠ΅ Haskell ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ±, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΡΠΎΠΈΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², — ΡΠΏΠΈΡΠΊΠΈ.
Π‘ΠΏΠΈΡΠΊΠΈ Π² Haskell ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. Π‘ΠΏΠΈΡΠΎΠΊ — ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ — ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΡΡΠΌ). Π’ΠΈΠΏ ΡΠΏΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π² ΡΠ·ΡΠΊΠ΅ Haskell ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ [Π’], Π³Π΄Π΅ Π’ — ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, [Integer] Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠΈΠΏ ΡΠΏΠΈΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°, Π° [ ([Char], Double) ] — ΡΡΠΎ ΡΠΈΠΏ ΡΠΏΠΈΡΠΊΠ°, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΈΠ· Π΄Π²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° Π²ΡΠΎΡΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ — Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
Π‘Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΡΠΏΠΈΡΠΊΠΈ Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, [ 1, 3, 4, 8 ] — ΡΡΠΎ ΡΠ΅ΡΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» (ΡΠΈΠΏΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Num t=> [ t ]), Π° [ ([1 Ρ', ' i ' ], 3.14), ([1 Π΅1 ],.
2.72)] — ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° [ ([Char], Double) ]. ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ° Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²Π΅ΡΠ½Π°, ΡΠ°ΠΊ ΡΡΠΎ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, [ 3, 4, ' * 1 ] Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π²Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ — ΡΡΠΎ ΡΠΈΡΠ»Π°, Π° ΡΡΠ΅ΡΡΡ — ΡΠΈΠΌΠ²ΠΎΠ».
ΠΡΠΌΠ΅ΡΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΊΠ»ΡΡΠΈΠ² ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠ° «Haskell» ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ΅ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ: [ 1 Π ', 'a1, 's', ' k', ' Π΅', ' 1', '1']. ΠΠ»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ·ΡΠΊΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° — String, ΡΠ°ΠΊ ΡΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ [Char].
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π°Π±Π·Π°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ: ΡΠΏΠΈΡΠΎΠΊ [(«pi», 3.14), («Π΅ΠΏ, 2.72)] ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°.
[ (String, Double)].
ΠΡΠΎΡΠΎΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅, ΡΠΊΠΎΡΠ΅Π΅, ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² — ΡΡΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΈΡΠ΅Π», ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°Π³ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠΈ ΡΠ°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°, ΡΠ°Π·Π΄Π΅Π»ΠΈΠ² ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΠΈΠ· Π΄Π²ΡΡ ΡΠΎΡΠ΅ΠΊ. Π’Π°ΠΊ, [1. .10] ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· 10 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 10. ΠΡΠ»ΠΈ ΡΠ°Π³ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠΈ Π½Π΅ ΡΠ°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π²Π° ΠΏΠ΅ΡΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° [ 3, 5.. 11 ] Π·Π°Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΏΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» 3, 5, 7, 9 ΠΈ 11. ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ° Π·Π°ΠΏΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² Ρ ΡΠΈΡΠ»ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ [ 1.. ΠΏ] ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ²ΡΡ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ. ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π² ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ, Π½Π΅Π»ΡΠ·Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΠΈΡΡ [3, 5. .13, 14] Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ.
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΡΠΌ ΠΏΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠΈ ΠΈΠ· Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΠ΅Π». ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΠ»Π°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ Π² ΡΠ·ΡΠΊΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΈΠΆΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊ Π·Π°ΡΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠΏΠΈΡΠΊΠ°. Π ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π°Ρ , Π½Π°ΠΏΡΠΎΡΠΈΠ², Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΡΠΎΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ [0,3. .11] Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: [ 0, 3, 6, 9] (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ 12 ΡΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ). Π Π²ΠΎΡ ΡΠΏΠΈΡΠΎΠΊ [0,0.3. .1.1] Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΆΠ΅ ΠΏΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² [ 0.0, 0.3, 0.6, 0.89 999, 1.19 999], ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 1.19 999 Π±Π»ΠΈΠΆΠ΅ ΠΊ Π·Π°ΡΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ 1.1, ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
Π‘ΠΏΠΈΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ Π½Π°ΡΠ°Π»Ρ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ — ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ — ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΡΠ°Π²Π½ΡΠΉ [2,3, 4 ], ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 1: Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ ΡΠΈΡΠ»Π° 1, 2, 3, 4. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΎΠΊ [ 2, 3, 4 ] ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ Π² Π²ΠΈΠ΄Π΅ 2: (3: (4: [])).Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ (:) «ΠΏΡΠ°Π²ΠΎΠ°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π΅Π½», Ρ. Π΅. ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, ΠΊΠ°ΠΊ Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π° ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ 2:3:4: [ ] ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ «ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ», Ρ. Π΅. ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ. Π ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° [ ], ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ°Ρ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, — ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π΅ «Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ» Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ . ΠΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΡΡΡΠ΄Π° ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° 3 Ρ ΡΠΈΡΠ»ΠΎΠΌ 5 ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ — ΡΠΈΡΠ»ΠΎ 8, Π² ΡΠΎΡΡΠ°Π² ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡ Π½ΠΈ ΡΡΠΎΠΉΠΊΠ°, Π½ΠΈ ΠΏΡΡΠ΅ΡΠΊΠ°. Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ, ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ² — ΡΡΠΎ Π»ΠΈΡΡ ΡΠ°ΡΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π»ΠΈΡΠ΅ΡΠ°Π»Ρ) ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΏΠΈΡΠΎΠΊ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² — Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ ΠΈ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠΎΠ², Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΏΠΈΡΠΊΠ°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±.
ΠΠΌΠ΅Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² ΡΠ·ΡΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠΎΡ Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ :
- β’ head, last — ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ-ΡΠΏΠΈΡΠΊΡ Π²ΡΠ΄Π°ΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½Π΅ΠΏΡΡΡΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ;
- β’ tail — ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ΄Π°ΡΡΠ°Ρ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ init Π²ΡΠ΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ±Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΊ ΠΏΡΡΡΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ;
- β’ ! ! — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
Π²ΡΠ΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ°. Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ΠΏΡΡΡΡΠΌ, Π° Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅ΠΆΠ°ΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΡ Π½ΡΠ»Ρ (ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π½ΠΎΠΌΠ΅Ρ Π½ΠΎΠ»Ρ) Π΄ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ [1, 2, 3, 4] !! 2 ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΡΠ΄Π°ΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠΈΡΠ»Π° 3 — ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ°, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ 2;
- β’ null — ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΡΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°Π½ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — False;
- β’ length — ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΡΠΈΡΠ»ΡΡΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ (Π΄Π»ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ°). ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π½ΠΎΠ»Ρ;
- β’ ++ — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊ Π΄Π²ΡΠΌ ΡΠΏΠΈΡΠΊΠ°ΠΌ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π§Π°ΡΡΠΎ ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ) Π΄Π²ΡΡ ΡΡΡΠΎΠΊ.
ΠΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎΡΠΌΠΈΠΌ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ sumList, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ΅Π»ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ΄Π°ΡΡΠ΅ΠΉ ΠΈΡ ΡΡΠΌΠΌΡ (Π»ΠΈΡΡΠΈΠ½Π³ 2.10).
ΠΠΈΡΡΠΈΠ½Π³ 2.10. Π‘ΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°.
— ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. sumList: [Integer] -> Integer sumList s | null s = 0.
| otherwise = head s + sumList (tail s).
ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ sumList Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ s «ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ» ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ head ΠΈ tail. ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π΅Π»Π°ΡΡ Π΄Π²Π°ΠΆΠ΄Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΏΠΈΡΠΊΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΡΠ±ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ «ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ², ΡΠΎ ΠΈ Π΅Π³ΠΎ «ΡΠ°Π·Π±ΠΎΡΠΊΡ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· — Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ «ΠΎΠ±ΡΠ°Π·Π΅Ρ» — ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΏΠΈΡΠΊΠ° — Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ — ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΎΡΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ sumList ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ: sumList (x:xs) = Ρ + sumList xs.
ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π΅ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠΎΡΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ (x:xs). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ° (ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ), ΡΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ «ΡΠ°Π·Π±ΠΎΡΠΊΠ°» ΡΠΏΠΈΡΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (Π³ΠΎΠ»ΠΎΠ²Ρ) ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ (Ρ Π²ΠΎΡΡ) ΡΠΏΠΈΡΠΊΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Ρ Π½Π°ΡΠ½Π΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ, a xs — Ρ Π²ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°. Π ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΡΡ .
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°Π·ΡΠ° Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ. Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π½ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 2.11.
ΠΠΈΡΡΠΈΠ½Π³ 2.11. Π‘ΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°.
— ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
sumList: [Integer] -> Integer.
sumList [] =0.
sumList (x:s) = x + sumList s.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ sumList ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π½Π°ΡΠ°Π»Ρ ΡΠΏΠΈΡΠΊΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ head s + sumList (tail s) Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ last s + sumList (init s). ΠΠΎ Π²ΡΠΎΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΠΎΠ½ΡΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ: ΠΎΠ½ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊ ΠΎΡΡΠ°ΡΠΊΡ ΡΠΏΠΈΡΠΊΠ°, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊ Π½Π°ΡΠ°Π»Ρ ΡΠΏΠΈΡΠΊΠ°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΊΠ°ΠΆΡΡΡΡΡΡ Π»Π΅Π³ΠΊΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠΏΠΈΡΠΊΠ° ΠΊ ΠΊΠΎΠ½ΡΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ last ΠΈ init ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ head ΠΈ tail ΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, Π° ΡΡΠ½ΠΊΡΠΈΡ init Π΅ΡΠ΅ ΠΈ ΡΡΡΠΎΠΈΡ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π²ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²! Π ΡΡΠΎΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π΄Π²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ init: init [Ρ ] = [].
init (x:xs) = Ρ : init xs.
ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΡΠ½ΠΊΡΠΈΠΈ head ΠΈ tail ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ²: head (x:xs) = Ρ .
tail (x:xs) = xs.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ. ΠΡΠ°Π²Π΄Π°, Π΅ΡΠ»ΠΈ «ΠΎΠ±ΡΠ°Π·Π΅Ρ» ΡΠΎΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°Π·ΡΠ°-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»Π° 0, ΠΊΠ°ΠΊ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° ΠΈΠ»ΠΈ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° [ ], ΠΊΠ°ΠΊ Π² ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°) ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ, ΡΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’ΠΎΠ³Π΄Π° (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΎΡΠΎΠΆΠ΅ΠΉ Π²ΡΠ΄Π°Π» ΠΈΡΡΠΈΠ½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ) Π² ΠΏΡΠ°Π²ΡΡ ΡΠ°ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, ΠΈ ΡΠ΅Π΄ΡΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°.
ΠΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠΌΠ½Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π Π½Π΅ΠΉ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ length, init, last ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (++) Π΅ΡΡΡ 0(ΠΏ), Ρ. Π΅. Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄Π»ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ°-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ: ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π»Π΅Π²ΡΡ ΡΠ°ΡΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅:
[ ] ++ S = S.
(x:sl) ++ s2 = Ρ : (si ++ s2).
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
ΠΡ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π΄Π»Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΡ ΡΠΈΠΏΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠΎΠ² ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²; Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΠΏΡ ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² «ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ» Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² (++) Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠ½Π°, ΡΠΊΠ°Π·ΡΠ²Π°Ρ Π΄Π»Ρ ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ. ΠΠΎΡ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ length: length:: [Π°] -> Int.
Π ΡΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° Π°, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ length ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. Π‘Ρ ΠΎΠ΄Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ.
(++):: [Π°] -> [Π°] -> [Π°].
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° (ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ Π°), ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΈ Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ°, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠΌΠΈ. ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΈΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
ΠΠΏΠΈΡΠ΅ΠΌ ΡΠΈΠΏΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠΈΠ² Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π΅ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ sum, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ sumList, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ product, Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° (ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΠ°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅): head, tail:: [Π°] -> Π° init, last:: [Π°] -> [Π°] null:: [Π°] -> Bool.
(! !):: [Π°] -> Int -> Π°.
sum, product:: Num, Π° => [Π°] -> Π° ΠΠΏΠΈΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π²ΡΠ΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°). Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ «ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ» ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΆΠ΅ Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ², Π° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π’Π΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 2.12.
ΠΠΈΡΡΠΈΠ½Π³ 2.12. ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°
— ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°.
reverse:: [Π°] -> [Π°].
reverse [] = [].
reverse (x:s) = reverse s ++ [x].
ΠΡΠ»ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ°-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ; ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ Π·Π°Π΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π²Π΅ΡΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΈΠΌΠ΅ΡΡ Π»ΠΈΡΠ½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 2.13.
ΠΠΈΡΡΠΈΠ½Π³ 2.13. ΠΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°.
— ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°.
reverse:: [Π°] -> [Π°].
reverse s = reverse' [] s.
- — Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ reverse'
- — ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° reverse': [Π°] -> [Π°] -> [Π°]
reverse' s [] = s.
reverse' si (x:s2) = reverse' (x:sl) s2.
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΆΠ΅ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ΠΌΡ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ reverse ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Haskell, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π³ΠΎ Π½ΠΈ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ, Π½ΠΈ Π½Π° Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: reverse = foldl (flip (:)) [].
ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ Π½Π°ΡΡΠΈΠΌΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΎΠΌ ΡΡΠΈΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ:
- β’ take — ΡΡΡΠΎΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ΅ΡΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ°-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ take 4 [3,1,6,5,81 Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ [3,1,6,5]. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Π° Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ;
- β’ drop — ΠΈΠΌΠ΅Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΠ°ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π½ΠΎ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ drop 4 [3,1,6, 5, 8 ].
ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° [ 5 ]. Π€ΡΠ½ΠΊΡΠΈΡ drop ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΈ ΡΠΈΡΠ΅Π», Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Π° Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, drop n list ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Π½ΡΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏ Π²ΡΠ΄Π°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ list Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° ΠΏΡΠΈ n > length list Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ;
β’ splitAt — ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ take ΠΈ drop, Π²ΡΠ΄Π°Π²Π°Ρ ΡΡΠ°Π·Ρ ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΈ ΠΏΠΎΡΡΡΠΈΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· Π΄Π²ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ splitAt 4 [3,1, 6,5,8] Π±ΡΠ΄Π΅Ρ ΠΏΠ°ΡΠ° ([3,1,6,5], [8]). ΠΠΎΠΎΠ±ΡΠ΅, Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ splitAt.
n list ΠΈ (take n list, drop n list) ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅ΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡ Π½Π°Π΄ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ°ΠΊ:
[ |, ].
Π³Π΄Π΅ — ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π²ΠΈΠ΄ <-, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ <- [ 1.. 5]; — Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π°Π΄ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°Π·ΡΠ°, Π²ΡΡΠΈΡΠ»ΡΡΡΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π°Π΄ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°Π·ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΏΠΈΡΠΊΠ°.
[ Ρ *Ρ | Ρ <- [1.100], Ρ 'mod' 3 /= 0, Ρ 'mod' 5 /= 0].
Π·Π°Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΡΠΈΡΠ΅Π» ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠ½ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄Π΅Π»ΡΡΡΡ Π½ΠΈ ΠΏΠ° 3,.
Π½ΠΈ Π½Π° 5.
ΠΡΠ»ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π±Π΅ΡΡΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· Π²ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΄Π²ΡΡ Π±ΡΠΊΠ²Π΅Π½Π½ΡΡ ΡΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π°Π»ΡΠ°Π²ΠΈΡΠ΅ alfa ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΏΠΈΡΠ°Π² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
[ [Π°, Πͺ] | Π° <- alfa, b <- alfa ].
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
" let alfa = «abc» .
>> [ [a, b] | Π° <- alfa, b <- alfa ].
[" aa" ," ab" ," ac" ," ba" ," bb" ," be"," ca"," cb" ," cc" ].
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ Π²ΡΠ΅ Π΄Π²ΡΠ·Π½Π°ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ:
" let digits = «123 456 789ΠΉ
>> [ [dl, d2] | dl <- digits, d2 <- digits, dl /=.
[" 10″ ," 11″ ," 12″ ," 13″ ," 14″ ," 15″ ," 16″ ,…," 97″ ," 98″ ,.
ii.
'O'.
99″ ].
].
(ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ).
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π³Π»Π°Π²Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π Π½Π΅ΠΉ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ — ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ, Ρ. Π΅. ΡΠΏΠΈΡΠΎΠΊ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΡΠΆΠ°Ρ ΡΠΏΠΈΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΈΠΌΠ΅ΡΡΡΡ Π»ΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΡΡΠΎΠΊ «Π±Π΅Π»ΡΠ΅» ΡΡΡΠΎΠΊΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ «Π±Π΅Π»ΠΎΠΉ» ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π»ΠΈΠ±ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Ρ. Π΅. ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ Ρ. ΠΏ. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΡΡΡΠΌ, Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Haskell isSpace, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Data.Char. ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² Haskell ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ import, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΠΊΡΡΠ° Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° «Π±Π΅Π»ΠΎΠΉ». ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΆΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ: Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΡ «ΡΠ²Π΅Ρ» ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ . ΠΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π° «Π±Π΅Π»Π°Ρ» ΡΡΡΠΎΠΊΠ°, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡ ΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ True. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ «Π±Π΅Π»ΠΎΠΉ» ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡΡ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ False. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 2.14 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ.
ΠΠΈΡΡΠΈΠ½Π³ 2.14. Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ «Π±Π΅Π»ΡΡ » ΡΡΡΠΎΠΊ.
import Data.Char.
— ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ «ΡΠ²Π΅ΡΠ°» ΡΡΡΠΎΠΊΠΈ.
white white [].
white (x:s) | isSpace x.
| otherwise.
:: String -> Bool = True = white s = False.
— ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠ°Ρ, ΠΈΠΌΠ΅ΡΡΡΡ Π»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΡΡΠΎΠΊ «Π±Π΅Π»ΡΠ΅» hasWhites:: [String] -> Bool.
hasWhites [] = False.
hasWhites (x:s) | white x = True.
| otherwise = hasWhites s.
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΡ Π½Π΅ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΡΠ΅ΡΠ°ΡΡ Π·Π°Π΄Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ.