ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
multThree :: Int -> Int -> Int -> Int
multThree x y z = x * y * z
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ multThree 3 5 9 ΠΈΠ»ΠΈ ((multThree 3) 5) 9? Π‘Π½Π°ΡΠ°Π»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 3 ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ multThree, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ Π½Π° 3. ΠΠ°ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 5 ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΠΌΠ½ΠΎΠΆΠΈΡ Π΅Π³ΠΎ ΡΠΆΠ΅ Π½Π° 15. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ 9 ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ 135. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ°Π±ΡΠΈΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ. ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΌΡ Π΄Π°ΡΠΌ ΡΠ°Π±ΡΠΈΠΊΠ΅ multThree ΡΠΈΡΠ»ΠΎ 3, ΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π°ΡΡ ΡΠΈΡΠ»ΠΎ, ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΌ ΡΠ°Π±ΡΠΈΠΊΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅. ΠΡΠ° Π½ΠΎΠ²Π°Ρ ΡΠ°Π±ΡΠΈΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ 5 ΠΈ ΡΠΎΠΆΠ΅ Π²ΡΠ΄Π°ΡΡ ΡΠ°Π±ΡΠΈΠΊΡ. Π’ΡΠ΅ΡΡΡ ΡΠ°Π±ΡΠΈΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° 9 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β ΡΠΈΡΠ»ΠΎ 135. ΠΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΈΠΏ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊ:
multThree :: Int -> (Int -> (Int -> Int))
ΠΠ΅ΡΠ΅Π΄ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ β> ΠΏΠΈΡΠ΅ΡΡΡ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ; ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° Int -> (Int β> Int). ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ° Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° Int -> Int. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° Int.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΡΡΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
ghci> let multTwoWithNine = multThree 9
ghci> multTwoWithNine 2 3
54
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ multThree 9 Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ multTwoWithNine. ΠΡΠ»ΠΈ ΠΏΡΠΈ Π΅Ρ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΠΎ ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡ ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠΈΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° 9.
ΠΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Β«Π½Π° Π»Π΅ΡΡΒ». ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ 100. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ:
compareWithHundred :: Int -> Ordering
compareWithHundred x = compare 100 x
ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Ρ 99, ΠΎΠ½Π° Π²Π΅ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ GT. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ x Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π² ΠΎΠ±Π΅ΠΈΡ ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π²Π΅ΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ compare 100. ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² Π²Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ 100. ΠΠ³Π°-Π°! ΠΠ΅ ΡΡΠΎΠ³ΠΎ Π»ΠΈ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ? ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
compareWithHundred :: Int -> Ordering
compareWithHundred = compare 100
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ compare 100 Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ compare ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ (Ord a) => a β> (a β> Ordering). ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΅Ρ ΠΊ 100, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Ordering.
Π‘Π΅ΡΠ΅Π½ΠΈΡ
ΠΠ½ΡΠΈΠΊΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Ρ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΊ ΡΡΠΎΡΠΎΠ½Π΅ Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ. ΠΠΎΡ Π΄ΠΎΠ½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
divideByTen :: (Floating a) => a β> a
divideByTen = (/10)
ΠΡΠ·ΠΎΠ², ΡΠΊΠ°ΠΆΠ΅ΠΌ, divideByTen 200 ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π²ΡΠ·ΠΎΠ²Ρ 200 / 10, ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ (/10) 200:
ghci> divideByTen 200
20.0
ghci> 200 / 10
20.0
ghci> (/10) 200
20.0
Π Π²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅:
isUpperAlphanum :: Char β> Bool
isUpperAlphanum = (`elem` ['Π'..'Π―'])
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ β ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° Β«ΠΌΠΈΠ½ΡΡΒ». ΠΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, (β4) β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° (β4) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΠΌΠΈΠ½ΡΡ ΡΠ΅ΡΡΡΠ΅Β». ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: (subtract 4).
ΠΠ΅ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ Π΄Π°Π²Π°Π»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈΠΌΠ΅Π½Π°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ? Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ multThree 3 4 Π² GHCi Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° let Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ?
ghci> multThree 3 4
<interactive>:1:0:
No instance for (Show (a β> a))
arising from a use of `print' at <interactive>:1:0β12
Possible fix: add an instance declaration for (Show (a β> a))
In the expression: print it
In a 'do' expression: print it
GHCi ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° a β> a, Π½ΠΎ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ Π²ΡΠ²Π΅ΡΡΠΈ Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½. Π€ΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° Show, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ½ΠΎΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ³Π΄Π° ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, 1 + 1 Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ GHCi, ΠΎΠ½ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ (2), Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ show Π΄Π»Ρ 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ 2 β ΡΡΠΎ ΡΡΡΠΎΠΊΠ° "2", ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ ΠΠΠΠ§ΠΠΠΠ. Π£Π΄ΠΎΡΡΠΎΠ²Π΅ΡΡΡΠ΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π²ΡΡΠΎΠΊΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΡ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ, ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Ρ ΠΊ ΡΠ΅ΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ!
applyTwice :: (a β> a) β> a β> a
applyTwice f x = f (f x)
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ°. Π Π°Π½ΡΡΠ΅ ΠΌΡ Π½Π΅ Π½ΡΠΆΠ΄Π°Π»ΠΈΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» β> ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΎΠΉ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ. ΠΠ½ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ, ΡΡΠΎ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΊΠ°ΠΊ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅, Π½ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ (ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ a β> a), Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ a. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΌΡ ΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΏΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ a β Int, String ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ΅ΠΌΡ ΡΠ³ΠΎΠ΄Π½ΠΎ β Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΠ ΠΠΠΠ§ΠΠΠΠ. ΠΡΠ½ΡΠ½Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΎΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠΌΡ ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ a β> a β> a ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Ρ ΠΎΡΡ ΠΌΡ ΠΈ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Β«Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈΒ».
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ applyTwice Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ f ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Π΅Ρ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ x (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ½ΠΎΠ²Π° Π² ΡΡΠ½ΠΊΡΠΈΡ f. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ:
ghci> applyTwice (+3) 10
16
ghci> applyTwice (++ " Π₯Π-Π₯Π") "ΠΠ"
"ΠΠ Π₯Π-Π₯Π Π₯Π-Π₯Π"
ghci> applyTwice ("Π₯Π-Π₯Π " ++) "ΠΠ"
"Π₯Π-Π₯Π Π₯Π-Π₯Π ΠΠ"
ghci> applyTwice (multThree 2 2) 9
144
ghci> applyTwice (3:) [1]
[3,3,1]
ΠΡΠ°ΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Ρ. ΠΡΠ»ΠΈ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π°Π»ΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Ρ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ + ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°; Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ zipWith
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π€ΠΠ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ zipWith. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΡ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ:
zipWith' :: (a β> b β> c) β> [a] β> [b] β> [c]
zipWith' _ [] _ = []
zipWith' _ _ [] = []
zipWith' f (x:xs) (y:ys) = f x y : zipWith' f xs ys
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ°. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½ΠΎ ΠΌΠΎΠ³ΡΡ. ΠΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΡΠΏΠΈΡΠΊΠΈ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΠ΅ΡΠ²ΡΠΌ ΠΈΠ΄ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° a, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° a Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° b, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Ρ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ b. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ β ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° c. ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° a β> b β> c ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ a β> a β> a, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.