Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude>
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ β Π²Ρ Π² GHCi!
ΠΠ ΠΠΠΠ§ΠΠΠΠ. ΠΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π²Π²ΠΎΠ΄Π° β Prelude>, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎ ghci>. ΠΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Ρ Π²Π°Ρ Π±ΡΠ»ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ :set prompt "ghci> ".
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ:
ghci> 2 + 15 17
ghci> 49 * 100
4900
ghci> 1892 β 1472 420
ghci> 5 / 2
2.5
ΠΠΎΠ΄ Π³ΠΎΠ²ΠΎΡΠΈΡ ΡΠ°ΠΌ Π·Π° ΡΠ΅Π±Ρ. Π’Π°ΠΊΠΆΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²; ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ:
ghci> (50 * 100) β 4999 1
ghci> 50 * 100 β 4999
1
ghci> 50 * (100 β 4999)
β244950
ΠΠ΄ΠΎΡΠΎΠ²ΠΎ, ΠΏΡΠ°Π²Π΄Π°? Π§ΡΠ²ΡΡΠ²ΡΡ, Π²Ρ ΡΠΎ ΠΌΠ½ΠΎΠΉ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ½Ρ, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΏΠ΅Π½ΠΈΡ! ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΊΡΠΎΠ΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π». ΠΡΠ»ΠΈ Π½Π°ΠΌ Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π»ΡΡΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ Π² ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 5 * β3 ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅, Π·Π°ΡΠΎ 5 * (β3) ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ.
ΠΡΠ»Π΅Π²Π° Π°Π»Π³Π΅Π±ΡΠ° Π² Haskell ΡΡΠΎΠ»Ρ ΠΆΠ΅ ΠΏΡΠΎΡΡΠ°. ΠΠ°ΠΊ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² Haskell ΠΈΠΌΠ΅Π΅ΡΡΡ Π΄Π²Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ True ΠΈ False, Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ && (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Β«ΠΒ»), Π΄Π»Ρ Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ || (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Β«ΠΠΠΒ»), Π΄Π»Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ not.
ghci> True && False False
ghci> True && True True
ghci> False || True True
ghci> not False
True
ghci> not (True&&True)
False
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ == ΠΈ /=, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ghci> 5 == 5
True
ghci> 1 == 0
False
ghci> 5 /= 5
False
ghci> 5 /= 4
True
ghci> "ΠΏΡΠΈΠ²Π΅Ρ" == "ΠΏΡΠΈΠ²Π΅Ρ"
True
Π ΡΡΠΎ Π½Π°ΡΡΡΡ 5 + Π»Π°ΠΌΠ° ΠΈΠ»ΠΈ 5 == True? ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈ ΡΡΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅[1]!
No instance for (Num [Char])
arising from a use of `+' at <interactive>:1:0β9
Possible fix: add an instance declaration for (Num [Char]) In the expression: 5 + "Π»Π°ΠΌΠ°"
In the definition of `it': it = 5 + "Π»Π°ΠΌΠ°"
Π’Π°-Π°ΠΊ! GHCi Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ, ΡΡΠΎ Π»Π°ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΊ 5. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π»Π°ΠΌΠ° ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΈΠ»ΠΈ 4, Haskell Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎ ΡΠΈΡΠ»ΠΎΠΌ! ΠΠΏΠ΅ΡΠ°ΡΠΈΡ + ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ»Π΅Π²Π° ΠΈ ΡΠΏΡΠ°Π²Π° Π±ΡΠ΄ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ True == 5, GHCi ΠΎΠΏΡΡΡ ΡΠΊΠ°ΠΆΠ΅Ρ Π½Π°ΠΌ, ΡΡΠΎ ΡΠΈΠΏΡ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ + ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΊΠ°ΠΊ ΡΠΈΡΠ»ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (==), Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ Π»ΡΠ±ΠΎΠΉ ΠΏΠ°ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ. Π€ΠΎΠΊΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ±Π»ΠΎΠΊΠΈ ΠΈ Π°ΠΏΠ΅Π»ΡΡΠΈΠ½Ρ. Π ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΡ ΠΌΡ ΡΡΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ ΠΠΠΠ§ΠΠΠΠ. ΠΠ°ΠΏΠΈΡΡ 5 + 4.0 Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ 5 ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. 4.0 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ Π² ΡΠΎΠ»ΠΈ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΡΠ»ΠΎ 5 Π΄ΠΎΠ»ΠΆΠ½ΠΎ Β«ΠΏΠΎΠ΄ΡΡΡΠΎΠΈΡΡΡΡΒ».
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠΎΠ·Π½Π°Π»ΠΈ, Π½ΠΎ Π²ΡΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ * β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠΈΡΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΈΡ . ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Ρ, Π²ΡΡΠ°Π²Π»ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» * ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡΒ».
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΠΎΡΠΌΡ β ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΡΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΡ Π·Π°ΠΏΡΡΡΠΌΠΈ) Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ . Π ΡΠ·ΡΠΊΠ΅ Haskell ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ β ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ±Π΅Π» β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠΊΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°:
ghci> succ 8 9
Π€ΡΠ½ΠΊΡΠΈΡ succ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ. ΠΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΡΡΠΎ.
Π€ΡΠ½ΠΊΡΠΈΠΈ min ΠΈ max ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ (ΠΊΠ°ΠΊ ΠΈ ΡΠΈΡΠ»Π°!), ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
ghci> min 9 10
9
ghci> min 3.4 3.2
3.2
ghci> max 100 101 101
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠΎ Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ±Π΅Π») ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΠ»Ρ Π½Π°Ρ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ:
ghci> succ 9 + max 5 4 + 1
16
ghci> (succ 9) + (max 5 4) + 1
16
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΡΠ΅Π» 9 ΠΈ 10, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ succ 9 * 10, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π° 9 (Ρ. Π΅. 10), ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 10, Ρ. Π΅. 100. Π‘Π»Π΅Π΄ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ succ (9 * 10), ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ 91.
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ²Π½ΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ Π΅Ρ Π² ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅, Π·Π°ΠΊΠ»ΡΡΠΈΠ² Π΅Ρ ΠΈΠΌΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π°ΠΏΠΎΡΡΡΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ div ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
ghci> div 92 10
9
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΡΠ°Π·Π±Π΅ΡΠΈΡ Π° Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· ΡΠΈΡΠ΅Π» Π΄Π΅Π»ΠΈΠΌΠΎΠ΅, Π° ΠΊΠ°ΠΊΠΎΠ΅ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅, ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅[2]:
ghci> 92 `div` 10
9
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ, ΠΏΠ΅ΡΠ΅ΡΠ΅Π΄ΡΠΈΠ΅ Π½Π° Haskell Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ², ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠΎΠ΄Π΅ foo(), bar(1) ΠΈΠ»ΠΈ baz(3, Ρ Π°-Ρ Π°). ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ, Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Haskell ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ·ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: foo, bar 1 ΠΈ baz 3 Ρ Π°-Ρ Π°. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΎΠ΄Π΅ bar (bar 3), ΡΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ bar Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ bar ΠΈ 3. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ bar Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ 3, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ bar Ρ ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π ΡΠ·ΡΠΊΠ΅ Π‘ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ Π±Ρ ΡΠ°ΠΊ: βbar(bar(3))β.
Π€ΡΠ½ΠΊΡΠΈΠΈ: ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ. ΠΠ° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ[3], ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ΠΠΎ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΡ Π΅ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» =, Π° Π·Π° Π½ΠΈΠΌ β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π΅Π»Π°Π΅Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ Π΅Π³ΠΎ Π½Π° 2. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈ Π½Π°Π±Π΅ΡΠΈΡΠ΅ Π² Π½ΡΠΌ:
doubleMe x = x + x
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ baby.hs. ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π΅Π³ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ, ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΡΡΡΠ΄Π° GHCi. Π GHCi Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ :l baby. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°Π³ΡΡΠΆΠ΅Π½, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΏΡΠ°ΠΆΠ½ΡΡΡΡΡ c ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ:
ghci> :l baby
[1 of 1] Compiling Main ( baby.hs, interpreted )
Ok, modules loaded: Main.
ghci> doubleMe 9
18
ghci> doubleMe 8.3
16.6
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ + ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊΠ°ΠΊ ΠΊ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»Π°ΠΌ, ΡΠ°ΠΊ ΠΈ ΠΊ ΡΠΈΡΠ»Π°ΠΌ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ β ΠΊΠΎ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠΈΡΠ»ΠΎ), Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠΈΡΠ»Π°, ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π° Π΄Π²Π° ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΈΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠΎΠΏΠΈΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» baby.hs:
doubleUs x y = x*2 + y*2
ΠΠ ΠΠΠΠ§ΠΠΠΠ. Π€ΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ·ΡΠΊΠ΅ Haskell ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ baby.hs.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ :l baby Π² GHCi, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡ:
ghci> doubleUs 4 9
26
ghci> doubleUs 2.3 34.2
73.0
ghci> doubleUs 28 88 + doubleMe 123
478
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π²Π°ΠΌΠΈ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ. Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ doubleUs ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
doubleUs x y = doubleMe x + doubleMe y
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²ΠΎ Π²ΡΡΠΌ ΡΠ·ΡΠΊΠ΅ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°, ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅.