рдШрд░ рдХрд╛ рдкрд╢реНрдЪрд┐рдо
рдЖрдк рдПрдХ рд╕рдлреЗрдж рдШрд░ рдХреЗ рдкрд╢реНрдЪрд┐рдо рдореЗрдВ рдПрдХ рдЦреБрд▓реЗ рдореИрджрд╛рди рдореЗрдВ рдЦрдбрд╝реЗ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдЦрдбрд╝реЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рд╣реИред
> рдореЗрд▓рдмреЙрдХреНрд╕ рдЦреЛрд▓реЗрдВ
рдЫреЛрдЯрд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рдЦреЛрд▓рдиреЗ рд╕реЗ рдПрдХ рдкрддреНрд░рдХ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИред
> рдкрддреНрд░рдХ рдкрдврд╝реЗрдВ
(рд▓рд┐рдпрд╛)
ZORK рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
ZORK рд░реЛрдорд╛рдВрдЪ, рдЦрддрд░реЗ рдФрд░ рдХрдо рдЪрд╛рд▓рд╛рдХ рдХрд╛ рдЦреЗрд▓ рд╣реИред рдЗрд╕рдореЗрдВ рдЖрдк рдирд╢реНрд╡рд░ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдм рддрдХ рдХреЗ рд╕рдмрд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рдХреЛрдИ рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдПрдХ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! "
рд╕рд╛рдордЧреНрд░реА:
рдЧреНрд░реАрдЯрд┐рдВрдЧрднрд╛рдЧ 1 - рдЖрдЧреЗрднрд╛рдЧ 2 - рд╡рдирднрд╛рдЧ 3 - рдкреЛрд▓реАрдирд╛рднрд╛рдЧ 4 - рдШрд╛рдЯреА рдХрд╛ рджреГрд╢реНрдпрднрд╛рдЧ 5 - рд╣реЙрд▓рднрд╛рдЧ 1
рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╣рд╛рд╕реНрдХреЗрд▓ рднрд╛рд╖рд╛ рдХреА рд╕рднреА рдореВрд▓ рдмрд╛рддреЗрдВ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдФрд░ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВрдЧреЗред
рддреЛ, рдЖрдк рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдмрдВрдж рджрд░рд╡рд╛рдЬреЗ рдХреЗ рд╕рд╛рдордиреЗ рдЦрдбрд╝реЗ рд╣реИрдВ рдФрд░ рдЖрдк рдореЗрд▓рдмреЙрдХреНрд╕ рджреЗрдЦрддреЗ рд╣реИрдВред
рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЬреНрдпрд╛рджрд╛ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрдЪреНрдЫрд╛ред рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рд╕рдВрдХрд▓рдХ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЬреАрдПрдЪрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ (рдЧреНрд▓рд╛рд╕рдЧреЛ рд╣рд╛рд╕реНрдХреЗрд▓ рдХрдореНрдкрд┐рд▓рд░) рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕реНрдХреЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдирдХреНрд╕ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдореБрдЭрд╕реЗ рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдХрд╛рдо рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред) рд╕реНрдерд╛рдкрдирд╛ рддреБрдЪреНрдЫ рд╣реИ:
рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, ghci рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ PATH рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ "... \ Haskell Platform \ xyz0 \ bin \" рдЬреЛрдбрд╝реЗрдВред рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЛрдб "* .рдПрдЪрдПрд╕" рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИред рдЗрд╕реЗ HIDEIDE рдпрд╛ рдиреЛрдЯрдкреИрдб ++ (рдЬреИрд╕рд╛ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, * .hs рдлрд╛рдЗрд▓реЗрдВ GHCi рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреА - рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЖрдк рд╣реИрдХреЗрдЬ рдХреА рд╕рднреА рдЕрдЪреНрдЫрд╛рдИ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рднрдВрдбрд╛рд░ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ рдЧреЗрдо рдПрдбрдЧреЗрдо рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣ рдЦреБрдж рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдерд╛ред
рдЕрдкрдиреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рдЗрд╕рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА QuestMain.hs рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ, рдЙрдо, GHCi рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдХрдВрд╕реЛрд▓, рдЬреЛ рд╣рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬреАрдПрдЪрд╕реАрдЖрдИ рдиреЗ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛, 1 рдореЗрдВ рд╕реЗ 1 рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдХрд╣рд╛: "рдареАрдХ рд╣реИ, рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓: рдореБрдЦреНрдпред" рдЖрдк рдЖрд╕рдкрд╛рд╕ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ "* рдореБрдЦреНрдп>" рдХрд┐рд╕реА рднреА рдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджрд░реНрдЬ рдХрд░реЗрдВред рдирд╣реАрдВ, рдирд╣реАрдВ, рд╣рдо рдЗрд╕рдореЗрдВ рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред рдЕрдм рд╣рдо рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдереЛрдбрд╝рд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПред
* рдореБрдЦреНрдп : 4
4
* рдореБрдЦреНрдп : 2 + 4 - 7
- 1
* рдореБрдЦреНрдп : 9 / ( 2 * 5.0 )
0.9
* рдореБрдЦреНрдп ( - 1 ) + 4
3
* рдореБрдЦреНрдп : 7 == 7
рдпрд╣ рд╕рдЪ рд╣реИ
* рдореБрдЦреНрдп - рел > реж
рдЭреВрдард╛
рдЧрдгрд┐рдд рдХреЗ рдХрд╛рд░реНрдп рднреА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: рдкрд╛рдк x, cos x, tan x, atan x, abs xред
* рдореБрдЦреНрдп : рдкрд╛рдк 10 * рдкрд╛рдк 10 + рдХреЙрд╕ 10 * рдХреЙрд╕ 10
1.0
* рдореБрдЦреНрдп : рдкрд╛рдк ( 2 * cos 10 ) + tan 5
- 4.374758876543559
рд╣рд╛рд╕реНрдХреЗрд▓ рдПрдХ рдХреЗрд╕-рд╕рдВрд╡реЗрджреА рднрд╛рд╖рд╛ рд╣реИ (рдЬреИрд╕реЗ C ++, рдЬрд╛рд╡рд╛)ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ cOS рдлрд╝рдВрдХреНрд╢рди рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдордВрдЬрд╕реНрдп рдирд╣реАрдВ рд╣реИ! рдХреЗрд╡рд▓ "рдХреЙрд╕" рд╣реИред
* рдореБрдЦреНрдп ( cos ( cos 0.5 ) )
0.8026751006823349
* рдореБрдЦреНрдп - cos pi
- 1.0
рдпрд╣ рд╕рдм рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред pi рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдирдВрдмрд░ pi рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рдХрд╛рд░реНрдп рдПрдХ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдХрдИ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рд░рд▓ рд╣реИ: рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо, рдлрд┐рд░ рддрд░реНрдХред рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛрд╖реНрдардХ, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдпрд╛ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЗред
* рдореБрдЦреНрдп : logBase 2 2
1.0
* рдореБрдЦреНрдп : logBase ( рдкрд╛рдк 2 ) 2
- 7.28991425837762
рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд╛рдк 2 рдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд▓реЙрдЧрдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ # 1 рддрд░реНрдХ рд╣реЛред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдпрд╣ рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рддреАрди рддрд░реНрдХ (рдкрд╛рдк, 2, 2) рдХреЛ рджреЛ рдХреЗ рдмрдЬрд╛рдп logBase рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛, рдФрд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ:
* рдореБрдЦреНрдп : logBase рдкрд╛рдк 2 2
< рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ > : 1 : 1 :
рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг ( рдлреНрд▓реЛрдЯрд┐рдВрдЧ ( a0 -> a0 ) )
' logBase ' рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди
рд╕рдВрднрд╡ рдлрд┐рдХреНрд╕: ( рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ ( a0 -> a0 ) ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝реЗрдВ
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ: logBase sin 2 2
' It ' рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореАрдХрд░рдг рдореЗрдВ: рдпрд╣ = logBase sin 2 2
..................
рд╡рд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рдмрддрд╛рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╕реЛрдЪреЗрдВрдЧреЗред рдпрд╣ рдПрдХ рд╢рд╛рд╣реА рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдорд▓реЗ рд╣реИрдВред
рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рд╕рд╣рд┐рдд рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╛рде рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рд╛рд╕реНрдХреЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо ("рдЬреАрдПрдЪрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди") рдореЗрдВ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдХрд╛рд░реНрдп рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВ, рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЖрдкрдиреЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдиреЗ рд╕реНрд╡рдпрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдкрд╛рдк, рдХреЙрд╕ рдФрд░ рдЕрдиреНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдЕрд╕рд╛рдорд╛рдиреНрдп, рдХреБрдЫ рдЕрдЬреАрдм рдирд┐рд░реНрдорд╛рдг рджреЗрдЦреЗрдВрдЧреЗ:
рд╢рдмреНрдж :: рд╕реНрдЯреНрд░рд┐рдВрдЧ -> [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ]
рдпрд╛ рдпрд╣ рднреА рдПрдХ:
Eq a => Eq ( рд╢рд╛рдпрдж )
рдирд╣реАрдВ рд╕рдордЭреЗ? рдХреБрдЫ рдирд╣реАрдВ, рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╣реИ, рдЪрд▓реЛ рдереЛрдбрд╝рд╛ рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрдм рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рдеред рд╣рд╛рд╕реНрдХреЗрд▓ рддрд╛рд░ рд╕реА рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВ: рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрдгред рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг \ n ("рдирдИ рдкрдВрдХреНрддрд┐") рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
* рдореБрдЦреНрдп : "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!"
"рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛!"
* рдореБрдЦреНрдп : "рд╣реИрд▓реЛ, \ n рджреБрдирд┐рдпрд╛!"
"рдирдорд╕реНрддреЗ, \ n рджреБрдирд┐рдпрд╛!"
рдХреНрдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ ?? A. рдЬрдм рд╣рдо ghci рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдпрд╣ рдПрдХ рдПрдХрд▓ рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рд╕рд╣реА рджреЛрд╣рд░рд╛рдПрдЧрд╛:
* рдореБрдЦреНрдп : 1,000,000
1000000
* рдореБрдЦреНрдп - рд╕рддреНрдп
рдпрд╣ рд╕рдЪ рд╣реИ
рдпрд╣ ghci рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред рдЕрд╕рд▓реА рдХрдВрд╕реЛрд▓ рдкрд░ рди рддреЛ рдХреЛрдИ рд░реЗрдЦрд╛ рдФрд░ рди рд╣реА рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рдЕрднреА рддрдХ рднреЗрдЬреА рдЧрдИ рд╣реИред рдЪрд▓реЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди рднреЗрдЬреЗрдВ:
* рдореБрдЦреНрдп : putStrLn "рд╣реИрд▓реЛ, \ n рджреБрдирд┐рдпрд╛!"
рд╣реИрд▓реЛ,
рджреБрдирд┐рдпрд╛ !
рдЦреИрд░, putStrLn рдлрд╝рдВрдХреНрд╢рди рдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред ghci рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ред рд▓рд┐рдЦреЗрдВ: putStrLn, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ "++" рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
* рдореБрдЦреНрдп : putStrLn ( "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛ !
рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓реЗ !
рдХреЛрд╖реНрдардХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдШреА рд╣рдореЗрдВ рд╕рд╣реА рдорд┐рд▓реЗред рдХреЛрд╖реНрдардХ рдХреЗ рдмрд┐рдирд╛, рд╡рд╣ рд╕рдЪрдореБрдЪ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЛрдЪреЗрдВрдЧреЗ:
putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ "\ n рдХреИрд╕реЗ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!" <=> (putStrLn "рдирдорд╕реНрдХрд╛рд░, рджреБрдирд┐рдпрд╛!") ++ ("\ n рдХреИрд╕реЗ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
рдФрд░ рдпрд╣ рдПрдХ рдШрд╛рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрдВрд╕реЛрд▓ string1 рдЬреЛрдбрд╝рдиреЗ string2 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ?? рдпрд╣рд╛рдБ рджреБрд░реБрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИ:
* рдореБрдЦреНрдп : putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
< рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ > : 1 : 1 :
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ ' IO ( ) ' рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ [a ] рдХреЛ рдореЗрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛
' PutStrLn ' рдХреЗ рдХреЙрд▓ рдХреЗ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдореЗрдВ
рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ ' ( ++ ) ' , рдЕрд░реНрдерд╛рддреН
' putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!"
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ: putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рджреЛ рдЖрдЙрдЯрдкреБрдЯ рднреА рдЬреЛрдбрд╝ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдФрд░ рдЧрд▓рдд рд╡рд┐рдХрд▓реНрдк:
* рдореБрдЦреНрдп : putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ putStrLn " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
* рдореБрдЦреНрдп : putStrLn "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" PutStrLn " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
* рдореБрдЦреНрдп : "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" ++ putStrLn " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
рд╡рд┐рдХрд▓реНрдк рдЬрдм рдХреЛрдИ рдкреБрдЯрд╕реНрдЯреНрд░реЙрди рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ "рд╣рдо рдЪрд▓реЗ!" рдПрдХ рдирдИ рд▓рд╛рдЗрди рд╕реЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рдирд╣реАрдВ:
* рдореБрдЦреНрдп : "рдирдорд╕реНрддреЗ, рджреБрдирд┐рдпрд╛!" ++ " \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ!"
тАЬрдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛! \ n рдпрд╣рд╛рдБ рд╣рдо рдЪрд▓рддреЗ рд╣реИрдВ! "
рдкреНрд░рддреНрдпреЗрдХ рдЧрд▓рдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рд╣рдо рд╕рднреА рдЗрди рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреА рдХреНрд╖реБрджреНрд░рддрд╛ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ! .. рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╕рд╣реА рдФрд░ рд╕рдЯреАрдХ рджреЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдЕрдкрдиреЗ рдЖрджрд░реНрд╢ рдореЗрдВред
рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдХреА рдЕрдкрдиреА рджреБрдирд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рдХрд╛рдиреВрди рд╣реИрдВред рдХрд╛рдиреВрди рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рд╣реИред рдХрд╛рд░реНрдп, рдкреИрд░рд╛рдореАрдЯрд░, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ - рд╕рдм рдХреБрдЫ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
* рдореБрдЦреНрдп : putStrLn 5
< рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ > : 1 : 10 :
( Num String ) рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ
рд╢рд╛рдмреНрджрд┐рдХ ' 5 ' рд╕реЗ рдЙрддреНрдкрдиреНрди
рд╕рдВрднрд╛рд╡рд┐рдд рдлрд┐рдХреНрд╕: ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝реЗрдВ
' PutStrLn ' рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ , ' 5 '
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ: putStrLn 5
' рдЗрдЯ ' рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореАрдХрд░рдг рдореЗрдВ: рдпрд╣ = putStrLn 5
рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреБрднрд╛рд╖рд┐рдП рдХреА рдкрд░рд┐рдЪрд┐рдд рдХрд╕рдо рдЦрд╛рддреЗ рд╣реИрдВред PutStrLn рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░) рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдпрд╣, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ, => рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╣реИред рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
* рдореБрдЦреНрдп : putStrLn ( рд╢реЛ 5 )
5
рд╢реЛ рдлрд╝рдВрдХреНрд╢рди, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рддрд░реНрдХ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреБрдЯрд╕реНрдЯреНрд░реЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬрдм рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╢реЛ 5), рддреЛ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "5" рдорд┐рд▓рддреА рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд░реНрдЬ рдХрд░реЗрдВ:
* рдореБрдЦреНрдп : putStrLn ( "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░" ++ ( рд╢реЛ 5 ) ++ " \ n - рдлрд┐рд░ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред"
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рел
- рдлрд┐рд░ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ ред
рд╢реЛ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдЦреЛрдЬ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
* рдореБрдЦреНрдп : putStrLn ( "рдкрд╛рдк ^ 2 5 + cos ^ 2 5 =" ++ рд╢реЛ ( рдкрд╛рдк 5 * рдкрд╛рдк 5 + cos 5 * cos 5 ) )
sin ^ 2 5 + cos ^ 2 5 = 0.9999999999999999
рдмреЗрд╢рдХ, putStrLn рдХрд╛рдо рдореЗрдВ рдЖ рдЬрд╛рдПрдЧрд╛ рдХреЛрдИ рдХрдо рдирд╣реАрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд╕реНрдХрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЗрдЯрд▓рд╛рдЗрди рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╡реЗ "рдлрд╝рдВрдХреНрд╢рди" рдХреНрдпрд╛ рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ? рдЖрдк ghci рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ ": t" (": type") рдХрдорд╛рдВрдб рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
* рдореБрдЦреНрдп: рдЯреА 3 == 3
3 == 3 :: рдмреВрд▓
* рдореБрдЦреНрдп: рдЯреА 3 / = 3
3 / = 3 :: рдмреВрд▓
* рдореБрдЦреНрдп: рдкреНрд░рдХрд╛рд░ 'рдЪ'
'рдЪ' :: рдЪрд╛рд░
* рдореБрдЦреНрдп: рдкреНрд░рдХрд╛рд░ "рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реВрдБ"
"рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реВрдБ" :: [ рдЪрд╛рд░ ]
рдпрд╣рд╛рдВ, рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд▓реЗ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред PutStrLn рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
* рдореБрдЦреНрдп: рдЯреА putStrLn
putStrLn :: рд╕реНрдЯреНрд░рд┐рдВрдЧ -> IO ( )
рдпрджрд┐ рдЖрдк рд▓реЗрдЦрди рдХреЗ рдЗрд╕ рд░реВрдк рдореЗрдВ (рдЧрдгрд┐рдд рдореЗрдВ, рдХреБрдЫ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ) рдирд╣реАрдВ рдЖрдП рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдЖрдк рдереЛрдбрд╝рд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рдерд╛ред рд▓реЗрдХрд┐рди рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдЕрднреНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдЙрддрдиреЗ рд╣реА рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рд╛рд╕реНрдХреЗрд▓ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдХрд╣реАрдВ рд╕реЗ рдХреБрдЫ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рдЙрдВрдЧрд▓реА рд╕реЗ рдзрдордХреА рднреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЕрднреА рднреА рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдпрд╣ рднреА рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХреБрдЫ рд╕реА ++ рдХреА рддрд░рд╣ рдирд╣реАрдВ, рдЬрд╣рд╛рдВ рд╣рд░ рдЪрд░ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рд╡рд░реНрдгрди, рдЪрд┐рддреНрд░рд┐рдд, рдкрдВрдЬреАрдХреГрдд ...
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, putStrLn рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддрд╛ рд╣реИ рдФрд░ IO () рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ: "putStrLn рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ IO ()"ред рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣рдорд╛рд░реЗ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЯрд╛рдЗрдк "IO ()" - рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ (рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ, рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛)ред рдЯрд╛рдЗрдк "IO ()" рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ putStrLn рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ "рдЕрд╢реБрджреНрдз" рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдкреНрдд рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдкрджрд╛ рднреА, рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдЗрдУ () рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рдХреЛрдИ рддрдмрд╛рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдРрд╕реЗ рдХрд╛рд░реНрдп рдЬрд┐рдирдореЗрдВ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред
рдЙрдиреНрд╣реЗрдВ рд╢реБрджреНрдз, рдирд┐рд░реНрдзрд╛рд░рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд╕реНрдХреЗрд▓ рднрд╛рд╖рд╛ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рд╡рдЬрд╣ рд╕реЗ рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ рд╣реИред рдпрд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░)ред рдФрд░ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ? рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ? рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреИрд╕реЗ рдкрдврд╝реЗрдВ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рд╕рдм рдЧреИрд░-рдирд┐рд░реНрдзрд╛рд░рдХрд╡рд╛рдж рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ ("рднрд┐рдХреНрд╖реБ") рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рдпреЗ рдФрд░ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЕрдиреБрдЧреНрд░рд╣рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП, рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ QuestMain.hs рдореЗрдВ рдЦреЛрд▓реЗрдВред рдЬрдмрдХрд┐ рдЦрд╛рд▓реА рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рд╣реИ, рджрд╣рд▓реАрдЬред рдЬрд▓реНрдж рд╣реА mermaids рдпрд╣рд╛рдВ рддреИрд░реЗрдВрдЧреЗ рдФрд░ рдбреНрд░реЗрдЧрди рдЙрдбрд╝реЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдареЗрд╕ x y = x * y
рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУ! рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдХреЛрдИ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ! рдЬреЛ рдЖрдк рдКрдкрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рд╣реИред "рд╕рдорд╛рди" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдареЗрд╕ рджреЛ рддрд░реНрдХреЛрдВ x рдФрд░ y рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ x * y рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред QuestMain.hs рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ghci рдХрдВрд╕реЛрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ (ghci QuestMain.hs)ред рдпрджрд┐ рдХрдВрд╕реЛрд▓ рдЦреБрд▓рд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ: r - рдпрд╣ ghci рдХреЛ рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рдЖрдкрдХрд╛ QuestMain.hsред
* рдореБрдЦреНрдп: рдЖрд░
[ рез рдХрд╛ рез ] рдореБрдЦреНрдп рд╕рдВрдХрд▓рди ( H: \ Haskell \ QuestTutorial \ Quest \ QuestMain ред Hs , рд╡реНрдпрд╛рдЦреНрдпрд╛ )
рдареАрдХ рд╣реИ , рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд┐рдП рдЧрдП: рдореБрдЦреНрдп ред
* рдореБрдЦреНрдп : рдареЗрд╕ рей рел
15
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! (рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ: рдкрддреНрд░ рдХрд╛ рдорд╛рдорд▓рд╛; рдХреНрдпрд╛ QuestMain.hs рдмрдЪ рдЧрдпрд╛ рд╣реИ; рдХреНрдпрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг ghci рдореЗрдВ рд▓реЛрдб рд╣реИ?) рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ 3 рдФрд░ 5 рдХреНрд░рдорд╢рдГ рдЪрд░ x рдФрд░ y рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рджреБрднрд╛рд╖рд┐рдпрд╛ 3 * 5 рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде 3 5 рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
* рдореБрдЦреНрдп : рдареЗрд╕ 3 ( 2 + 3 )
15
* рдореБрдЦреНрдп : рдареЗрд╕ 3 ( cos pi )
- 3.0
рд╣рдо рдХреБрдЫ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред (рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдм рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ ghci рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред) рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:
PrintString str = putStrLn str
PrintSqrt x = putStrLn ( "Sqrt of" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( рд╡рд░реНрдЧ x ) )
* рдореБрдЦреНрдп : рдкреНрд░рд┐рдВрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ "dfdf"
dfdf
* рдореБрдЦреНрдп : PrintSqrt 4
4.0 = 2.0 рдХрд╛ Sqrt
* рдореБрдЦреНрдп : PrintSqrt ( - 4 )
Sqrt of - 4.0 = NaN
рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд░реНрдЧрдореВрд▓ рдкрд░рд┐рдгрд╛рдо "рдирд╣реАрдВ рд╕рдВрдЦреНрдпрд╛" рджреЗрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ "x <0!" рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ x рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╣рдо рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд┐рдВрдЯрд╕реНрдХрд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВред
PrintSqrt1 x =
рдпрджрд┐ x < 0
рдлрд┐рд░ рдкреБрдЯрд╕реНрдЯреНрд░рди "x <0!"
рдФрд░ рдкреБрдЯрд╕реНрдЯреНрд░рд▓ ( "Sqrt of" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( sqrt x ) )
PrintSqrt2 x = case x < 0 рдХрд╛
рд╕рдЪ -> putStrLn "x <0!"
рдЧрд▓рдд -> putStrLn ( "Sqrt of" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( sqrt x ) )
* рдореБрдЦреНрдп : PrintSqrt1 ( - 4 )
x < реж !
* рдореБрдЦреНрдп - PrintSqrt2 ( - 4 )
x < реж !
рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╛рди рд╕рдВрдХреЗрдд рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ (рд╡рд┐рдХрд▓реНрдкреЛрдВ) рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд┐рд░ рдЧрдпрд╛, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдзреВрд░рд╛ рд╕реЗрдЯ рд╣реИред
PrintSqrt2 x = case x < 0 рдХрд╛
рд╕рдЪ -> putStrLn "x <0!"
* рдореБрдЦреНрдп: рдЖрд░
...
* рдореБрдЦреНрдп - PrintSqrt2 ( - 4 )
x < реж !
* рдореБрдЦреНрдп : PrintSqrt2 10
*** рдЕрдкрд╡рд╛рдж: H: \ Haskell \ QuestTutorial \ рдХреНрд╡реЗрд╕реНрдЯ \ QuestMain ред hs: ( 12 , 16 ) - ( 13 , 41 ) : рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреИрд░ - рдердХрд╛рдК рдкреИрдЯрд░реНрди
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди ("рдЗрдВрдбреЗрдВрдЯреЗрд╢рди") рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рд╡рд╣рд╛рдБ рдпрд╛ рдЯреИрдм рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рд╕рдВрдХрд▓рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
PrintSqrt2 x = case x < 0 рдХрд╛
рд╕рдЪ -> putStrLn "x <0!"
рдЧрд▓рдд -> putStrLn ( "Sqrt of" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( sqrt x ) )
* рдореБрдЦреНрдп: рдЖрд░
[ рез рдХрд╛ рез ] рдореБрдЦреНрдп рд╕рдВрдХрд▓рди ( H: \ Haskell \ QuestTutorial \ Quest \ QuestMain ред Hs , рд╡реНрдпрд╛рдЦреНрдпрд╛ )
H: \ Haskell \ QuestTutorial \ рдХреНрд╡реЗрд╕реНрдЯ \ QuestMain ред hs: 14 : 23 :
рдЗрдирдкреБрдЯ рдкрд░ рддреНрд░реБрдЯрд┐ ' -> '
рд╡рд┐рдлрд▓ , рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛: рдХреЛрдИ рдирд╣реАрдВ ред
рдХреЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЕрдЧрд░-рддрдм-рддрдм рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдиреЗрд╕реНрдЯреЗрдб рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░-рдлрд┐рд░-рдЕрдиреНрдпрдерд╛, рдЗрд╕рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рдг рд╕рдорддреБрд▓реНрдп рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд░рд╣рд╕реНрдп рдмрддрд╛рддрд╛ рд╣реВрдВ: рдорд╛рдорд▓рд╛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рдФрд░ рдЬрд▓реНрдж рд╣реА рд╣рдо рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрджрд╛рд╣рд░рдгред рдереЛрдбрд╝рд╛ рдХреГрддреНрд░рд┐рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛:
thinkAboutSquaredX x = рдХреЗрд╕ x
0.0 -> "рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, x 0 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 0 * 0 = 0."
1.0 -> "x 1 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 * 1 = 1."
4.0 -> "рдареАрдХ рд╣реИ, x 2 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 2 * 2 = 4."
9.0 -> "x = 3."
16.0 -> "рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ, x = 4."
25.0 -> "рд╣рд╛! рдПрдХреНрд╕ = 5!"
рдЕрдиреНрдпрдерд╛ -> рдпрджрд┐ x < 0 рддреЛ "x <0!" рд╡рд░рдирд╛ "Sqrt" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( sqrt x )
* рдореБрдЦреНрдп
: thinkAboutSquaredX
1"X 1 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 * 1 = 1."* рдореБрдЦреНрдп
: thinkAboutSquaredX
25┬лрд╣рд╛! x = 5! тАЭрдЕрдиреНрдпрдерд╛ рд╢рдмреНрдж рдХрд╛ рднреА рдЕрд░реНрде рд╣реИ: "рдЕрдиреНрдпрдерд╛ред" рдЬрдм рдмрд╛рдХреА рд╡рд┐рдХрд▓реНрдк рдмрджрд▓реЗ рдореЗрдВ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ,
рдЕрдиреНрдпрдерд╛ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЯреНрд░реВ рдХрд╛ рдкрд░реНрдпрд╛рдп рд╣реИред рдЗрд╕реЗ рдмреАрдЪ рдореЗрдВ рди рдбрд╛рд▓реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╕рднреА рдирд┐рдЪрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред
thinkAboutSquaredX x = рдХреЗрд╕ x
0.0 -> "рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, x 0 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 0 * 0 = 0."
1.0 -> "x 1 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 * 1 = 1."
рдЕрдиреНрдпрдерд╛ -> рдЕрдЧрд░ x < 0 рддреЛ "x <0!" рдФрд░ "Sqrt" ++ рд╢реЛ x ++ "=" ++ рд╢реЛ ( sqrt x )
4.0 -> "рдареАрдХ рд╣реИ, x 2 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 2 * 2 = 4."
9.0 -> "x = 3."
16.0 -> "рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ, x = 4."
25.0 -> "рд╣рд╛! x = 5! тАЭ
рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдирдореВрдиреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ:
* рдореБрдЦреНрдп: рдЖрд░
[ рез рдХрд╛ рез ] рдореБрдЦреНрдп рд╕рдВрдХрд▓рди ( H: \ Haskell \ QuestTutorial \ Quest \ QuestMain ред Hs , рд╡реНрдпрд╛рдЦреНрдпрд╛ )
H: \ Haskell \ QuestTutorial \ рдХреНрд╡реЗрд╕реНрдЯ \ QuestMain ред hs: 16 : 24 :
рдЪреЗрддрд╛рд╡рдиреА: рдкреИрдЯрд░реНрди рдореИрдЪ ( рддреЛрдВ ) рдУрд╡рд░рд▓реИрдк рдХрд┐рдП рдЧрдП рд╣реИрдВ
рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк:
4.0 -> ...
9.0 -> ...
16.0 -> ...
25.0 -> ...
рдареАрдХ рд╣реИ , рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд┐рдП рдЧрдП: рдореБрдЦреНрдп ред
* рдореБрдЦреНрдп : thinkAboutSquaredX 1
"X 1 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 * 1 = 1."
* рдореБрдЦреНрдп : thinkAboutSquaredX 9
"Sqrt 9.0 = 3.0"
* рдореБрдЦреНрдп: рдЯреА рдЕрдиреНрдпрдерд╛
рдЕрдиреНрдпрдерд╛ :: рдмреВрд▓
* рдореБрдЦреНрдп = рдЕрдиреНрдпрдерд╛ == рд╕рдЪ
рдпрд╣ рд╕рдЪ рд╣реИ
рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рд╣рдо рдПрдХ рдЦреЛрдЬ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ! рдХрд┐рд╕реА рднреА рдЦреЛрдЬ рдореЗрдВ рддреАрди рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ: рд╕реНрдерд╛рди (рдкрдереЛрдВ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рд╕реЗ), рд╡рд╕реНрддреБрдПрдВ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рддреЛ рд╣рдо рд╕реНрдерд╛рди рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рд╡рд░реНрдгрдирд╕реНрдерд╛рди locNumber = рдХреЗрд╕ locNumber of
1 -> "рдЖрдк рд▓рдХрдбрд╝реА рдХреА рдореЗрдЬ рдкрд░ рдмреАрдЪ рдХреЗ рдХрдорд░реЗ рдореЗрдВ рдЦрдбрд╝реЗ рд╣реИрдВред"
2 -> "рдЖрдк рд▓рдХрдбрд╝реА рдХреЗ рдЫреЛрдЯреЗ рдмрд╛рдбрд╝ рдХреЗ рдкреАрдЫреЗ рд░рд╛рдд рдХреЗ рдмрдЧреАрдЪреЗ рдХреЗ рд╕рд╛рдордиреЗ рдЦрдбрд╝реЗ рд╣реИрдВред"
- рдпрд╣рд╛рдВ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдбрд╛рд▓реЗрдВред
рдЕрдиреНрдпрдерд╛ -> "рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд╛рдиред"
* рдореБрдЦреНрдп : рд╡рд░реНрдгрди реи
"рдЖрдк рд▓рдХрдбрд╝реА рдХреЗ рдЫреЛрдЯреЗ рдмрд╛рдбрд╝ рдХреЗ рдкреАрдЫреЗ рд░рд╛рдд рдХреЗ рдмрдЧреАрдЪреЗ рдХреЗ рд╕рд╛рдордиреЗ рдЦрдбрд╝реЗ рд╣реИрдВред"
* рдореБрдЦреНрдп : рд╡рд░реНрдгрди рекрекреж
"рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд╛рдиред"
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдЯрд┐рдкреНрдкрдгреА! рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдбрдмрд▓ рдорд╛рдЗрдирд╕ (рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ!) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП {- рдФрд░ -} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╡рд░реНрдгрдирд╕реНрдерд╛рди locNumber = рдХреЗрд╕ locNumber of
1 -> "рдЖрдк рд▓рдХрдбрд╝реА рдХреА рдореЗрдЬ рдкрд░ рдмреАрдЪ рдХреЗ рдХрдорд░реЗ рдореЗрдВ рдЦрдбрд╝реЗ рд╣реИрдВред"
2 -> "рдЖрдк рд▓рдХрдбрд╝реА рдХреЗ рдЫреЛрдЯреЗ рдмрд╛рдбрд╝ рдХреЗ рдкреАрдЫреЗ рд░рд╛рдд рдХреЗ рдмрдЧреАрдЪреЗ рдХреЗ рд╕рд╛рдордиреЗ рдЦрдбрд╝реЗ рд╣реИрдВред"
{- рдпрд╣рд╛рдВ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдбрд╛рд▓реЗрдВред
рдпрд╛ рдпрд╣рд╛рдБред
adfsdf рдХреБрдЫ fef jel jle jkjlefjaiejeo -}
рдЕрдиреНрдпрдерд╛ -> "рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд╛рдиред"
рдЦреИрд░ рдпрд╣рд╛рдБред рд╣рдореЗрдВ рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рд╣рд╛рд╕реНрдХреЗрд▓ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ред putStrLn, рд╢реЛ, рдХреЗрд╕-рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди, рд▓рд╛рдЗрдиреНрд╕, ghci - рдпрд╣ рд╕рдм рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЪрд╛рд╣рд┐рдП рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд▓рд┐рдЦрд╛ред рд╢рд╛рдпрдж рдХрд╛рдлреА рд╣реИред рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЦреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдХреБрдЫ рдЕрдиреНрдп рдорд╣рд╛рди рд╣рд╛рд╕реНрдХреЗрд▓ рдЯреНрд░рд┐рдХреНрд╕ рд╕реАрдЦреЗрдВрдЧреЗред рдПрдбрд╡реЗрдВрдЪрд░реНрд╕ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░!
рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1. рдлрд╝рдВрдХреНрд╢рди z рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ:
t = (7 * x ^ 3 - ln (abs (a)) / (2.7 * b)
y = sin (t) - sin (a)
z = 8.87 * y ^ 3 + рдЖрд░реНрдХрдЯрд┐рдХ (рдЯреА)
рдЬрд╣рд╛рдБ x, a, b рдкреНрд░рдХрд╛рд░ рдлрд╝реНрд▓реЛрдЯ рдХреЗ рдЪрд░ рд╣реИрдВред
2. рдлрд╝рдВрдХреНрд╢рди y рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ:
| ln (abs (sin (x))) рдпрджрд┐ x> 5
рдп = | x ^ 2 + a ^ 2 рдпрджрд┐ x <= 5 рдФрд░ рдПрдХ <= 3
| x / a + 7.8 * a if x <= 5 рдФрд░ a> 3
рдЬрд╣рд╛рдВ x, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрд░ рд╣реИрдВред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛, рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
рдЧреНрд░реАрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ