рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рджрд░реНрдЬрдиреЛрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд▓реЗрдЧреЛ рдХреНрдпреВрдмреНрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЕрд╕рдлрд▓ рдирд┐рд░реНрдгрдп рднрд╛рд╖рд╛ рдХреЗ рднрд╛рдЧреНрдп рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рднреА рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╕реИрдХрдбрд╝реЛрдВ рднрд╛рд╖рд╛рдПрдВ рдЧреБрдордирд╛рдореА рдореЗрдВ рд╡рдирд╕реНрдкрддрд┐ рдХрд░рддреА рд╣реИрдВ, рдмрдбрд╝реЗ рднрд╛рдЗрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреИрдЯрд╡реЙрдХ рд╕реЗ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рдпреЛрдЧреНрдп рддрдк рдХреЗ рд╕рд╛рде рджреБрдирд┐рдпрд╛ рд╕рд╛рд▓рд╛рдирд╛ рджреЛ рдпрд╛ рддреАрди рдирдП рдЬрдиреНрдо рджреЗрддреА рд╣реИред рдЪрд╛рд╣реЗ рд╡реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ "рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рд╢реНрд╡ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░реЛрдВ рдХреЗ рд╕рдореВрд╣" рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рдордп рдмрддрд╛рдПрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реА рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕реНрдХреЗрд▓-рдХреЛрдб рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╣рд╛рд╕реНрдХреЗрд▓ рдПрдХ рдЕрджреНрднреБрдд рднрд╛рд╖рд╛ рд╣реИред рд╡рд╣ рдмрд╣реБрдд рд╣реА рдПрдХреНрд╕рдкреНрд░реЗрд╕рд┐рд╡ рдФрд░ рдХреИрдкреЗрд╕рд┐рдЯрд┐рд╡ рд╣реИрдВред рдХреЛрдб рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛ (C ++, Java, C #) рдореЗрдВ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдПрдХ рдЖрджреЗрд╢ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдХреА рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рдХреГрддрд┐ рдФрд░ рдЗрд╕рдХреА рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдХ рдЧрдгрд┐рдд рд╕рдВрдХреЗрддрди рдХреА рддрд░рд╣ рдХреЛрдб рдмрдирд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдВрдХреЗрддрд┐рдХ (рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ) рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:
рддрдереНрдп рдПрди | n == 0 = 1
| n > 0 = n * fact ( n - 1 )
рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рд╕реНрдХреВрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЖрд╡рд░реНрддрдХ рддрдереНрдпрд╛рддреНрдордХ рд╕реВрддреНрд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдмреЗрд╢рдХ, рдПрдХ рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рд╕рдВрджреЗрд╣ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рд╛рд╕реНрдХреЗрд▓ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЗрдВрдЯ рдлреИрдХреНрдЯ ( int n )
{
if ( n == 0 ) рд╡рд╛рдкрд╕реА 1 ;
рд╡рд╛рдкрд╕реА n * fact ( n - 1 ) ;
}
рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдЯреИрдХ рдХреЛ рдкрдЫрддрд╛рд╡рд╛ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдПрдХ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЗрдВрдЯ рдлреИрдХреНрдЯ ( int n )
{
int f = 1 ;
for ( int i = 2 ; рдореИрдВ <= n ; ++ i )
f * = i ;
рд╡рд╛рдкрд╕реА рдЪ ;
}
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд┐рдЫрд▓реЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

рджреВрд╕рд░реА рдпреЛрдЬрдирд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рд╛рд╕реНрдХреЗрд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯреНрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡реЗ рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ: рд╡реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ
рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░
рдпрд╣ рдирд╣реАрдВ
рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ ред рдореИрдВ рдХреЛрдб рдХреЛ рддреАрди-рдЖрдпрд╛рдореА рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рджреГрд╢реНрдп рд╕реБрдВрджрд░, рд╕рд╣рдЬ рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛред рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИред
рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХреИрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдпрд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдирдП рдЙрдкрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдЧреАред рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдХрд╣рд╛рдирд┐рдпрд╛рдБ рдЬрд╛рдиреА рдЬрд╛рддреА рд╣реИрдВ; рдЗрд╕ рдХрдЯреЛрд░реЗ рдиреЗ рдХреБрдЫ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди 3.0, рдЬреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ)ред рдмрд╣реБрдд рд╣рдж рддрдХ, рдмрд╣реБрдд рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЫреЛрдЯреЗ рдореЗрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ред рд╕рдлрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде, рдкреВрд░реА рднрд╛рд╖рд╛ рдПрдХ рдмрдбрд╝реЗ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рднрд╛рд╖рд╛ рдХреЛ рднреА рдирд┐рд╢рд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣рд╛рдВ рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рднреА рдЫреВрдЯ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рд╣рд╛рд╕реНрдХреЗрд▓ рдбрд┐рдЬрд╛рдЗрди рдЬреНрдЮрд╛рдд рд╣реИ - рдореБрдЭреЗ рдЕрднреА рднреА рдЗрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рджреВрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред
рддреЛ, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрд╛рдлреА рд╕реНрд╡рддрдВрддреНрд░, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреГрд╢реНрдп рдФрд░ рд╕реМрдВрджрд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ - рдЙрдирдХреЗ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ рдЙрдирдХреЗ рдорд╣рддреНрд╡ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдЙрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдХрд┐рд╕реА рджрд┐рди рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЛрдб рдХреЗ рд▓рд┐рдП рднреА рд╕реНрдХреЗрдЪ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:
- | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмреЙрдХреНрд╕ рд╕рд╛рдЗрдб рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред
- | рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
f :: ReadyTextureObjects
-> GLfVertex3
-> ( BoxSide , QuadColorSpec )
-> ( [ BoxSide ] , [ IO ( ) ] )
-> ( [ BoxSide ] , [ IO ( ) ] )
f рдЯреЗрдХреНрд╕рд╕ рдмреЙрдХреНрд╕рдбрд┐рдо ( рд╕рд╛рдЗрдб , qColorSpec ) ( sList , ioList ) = let
BoxIO = do setQuadColorSpec texRes qColorSpec
рдЬреАрдПрд▓ред рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ GL ред рдХреНрд╡рд╛рдбреНрд╕ ( рдмреЙрдХреНрд╕рд╕рд╛рдЗрдб рдмреЙрдХреНрд╕рдбрд┐рдо рд╕рд╛рдЗрдб )
рдореЗрдВ ( рдкрдХреНрд╖: sList , boxIO: ioList )
рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП:
рдбреЗрдЯрд╛ QuadColorSpec = QuadTexture TextureName
| QuadPlainColor GLfColor4
| NoQuadColorSpec
рд╡реНрдпреБрддреНрдкрдиреНрди ( рджрд┐рдЦрд╛рдирд╛ )
data ObjectTextureSpec = BoxTextureSpec
{ quadSideTexes :: [ ( BoxSide , QuadColorSpec ) ]
, defQuadSideTex :: QuadColorSpec
} рд╡реНрдпреБрддреНрдкрдиреНрди ( рджрд┐рдЦрд╛рдПрдБ )
data CornerCoord = UR | рдбреАрдЖрд░ | рдбреАрдПрд▓ | рдпреВрдПрд▓
рд╡реНрдпреБрддреНрдкрдиреНрди ( рджрд┐рдЦрд╛рдирд╛ )
рдЗрд╕ рдмреАрдЪ, рдореЗрд░реЗ рдкрд╛рд╕ рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рдХреЛрдб рд╣реИ, рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рднрд╛рд╖рд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИ:
рддрдереНрдп рдПрди | n == 0 = 1
| n / = 0 = fact ( n - 1 ) * n
рдпрд╣рд╛рдБ рд╣рдо рдХрдИ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рджреЗрдЦрддреЗ рд╣реИрдВ:
рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдирд╛рдо | | рддрдереНрдп |
рддрд░реНрдХ | | n |
2 рд╕реБрд░рдХреНрд╖рд╛ рднрд╛рд╡ | | | рдПрди == 0 |
| | | рдПрди / = 0 |
2 рд╢рд░реАрд░ рдХреЗ рдХрд╛рд░реНрдп | | = 1 |
| | = fact (n - 1) * n |
рдмрджрд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рд░реАрд░ рдХреЛ рдПрдХ рдкреЗрдбрд╝ рдХреА рддрд░рд╣ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ рд▓реАрдЬрд┐рдПред рдЗрд╕ рдкреЗрдбрд╝ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдХреНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдкрд╣рд▓рд╛ рдореЛрдЯрд╛ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рддрд╛ рд╣реИ:

рдФрд░ рддреБрд░рдВрдд рдЦрд╛рдорд┐рдпрд╛рдВ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИрдВред рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рдХреБрдЫ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдб рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреИрд╕реЗ рдмрдврд╝реЗрдЧрд╛ред рд╣рд╛рдБ рд╡рд╣рд╛рдБ! рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдЦреБрдж рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдмреЙрдХреНрд╕ рдХреА рдПрдХ рд▓рдВрдмреА рдФрд░ unintuitive рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред "рдорд╛рдереЗ" рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдБ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧреА рддрдереНрдп рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ: рдкрд┐рд░рд╛рдорд┐рдб рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЕрд╡рддрд╛рд░ рд╣реИред рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рднреА рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ:



рдЕрдВрддрд┐рдо рддрд╕реНрд╡реАрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд┐рд░рд╛рдорд┐рдбрд▓ рдкреНрд░реЛрдЯреНрд░реВрд╢рд┐рдпрдВрд╕ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд╖рдпрдЧрдд рд░реВрдк рд╕реЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдкрд░ рдирд┐рд╡рд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдЗрдирд░реА рдлрд╝рдВрдХреНрд╢рди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдСрдкрд░реЗрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕рд╣рдЬ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рдПрдХ рдФрд░ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ, рдпрд╣ рдмрд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ infix рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
isListElement x xs = рдЧреНрдпрд╛рд░рд╣ x xs - рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк
isListElement 'x xs = x ` elem` xs - infix form
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ infix рд╕рдВрдХреЗрддрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ:
a b = a + b рдЬреЛрдбрд╝реЗрдВ
add 'a b = ( + ) a
рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреЗрдЪ рдореЗрдВ, рдЗрдиреНрдлрд┐рдХреНрд╕ рдлреЙрд░реНрдо рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЕрдВрддрд┐рдо рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЗрдХрд╛рдЗрдпреЛрдВ (рдЪрд░ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ) рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИ:

рдкрд┐рд░рд╛рдорд┐рдб рдХреА рдКрдВрдЪрд╛рдИ рдХрдо рд╣реЛ рдЧрдИ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрдиреНрдлрд┐рдХреНрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╣рд╛рдВ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╣рд╛рдВ рд╣реИред рд▓рдЧрд╛рддрд╛рд░ рдЧрдгрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
add3 a b c = a + b + c
someF x y z = x >> = y >> z


рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдХреНрд╕реЗ рдХреЗ рдмреАрдЪ рдХреА рдЦрд╛рдИ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдмрдХреНрд╕реЗ рдХреА рд▓рдВрдмрд╛рдИ рдмреЙрдХреНрд╕ рдкрд░ рдирд╛рдо рдкрд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдЬрдЧрд╣ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдХрд╛рд░ рдореЗрдВ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдПрдХрд░реВрдкрддрд╛ рдЦреЛ рджреЗрдВрдЧреЗред рд╡реЗрдм рдкреЗрдЬ рдпрд╛ рдХрд┐рд╕реА рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдлреЛрдВрдЯ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдЯрд┐рд▓, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рднреА рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рджрд┐рдЦреЗрдВрдЧреАред рдЖрдЗрдП рдлрд┐рдмреЛрдирд╛рдЪреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рджреЗрдЦреЗрдВ:
рддрдВрддреБрдУрдВ = 0 : 1 : zipWith ( + ) рддрдВрддреБрдУрдВ ( рдкреВрдВрдЫ рддрдВрддреБ )
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!) рдмрд╣реБрдд рд╕реБрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрдЪ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рджреЛ рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХрд╛ рдЪрд┐рд╣реНрди infix рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ zipWith рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рддреАрди рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: (+), рдлрд╝рд╛рдЗрдм рдФрд░ (рдЯреЗрд▓ рдлрд╝рд╛рдЗрдм)ред рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдХреЛрд╖реНрдардХ рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ рд╕рдВрдХреЗрдд рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдШрдЯрдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ "рдЙрдЪреНрдЪрддрд░ рдХрд╛рд░реНрдп рд╕рдорд╛рд░реЛрд╣" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдСрдкрд░реЗрдЯрд░ + рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреЛрдиреЛрдВ рддрд░реНрдХреЛрдВ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдиреБрднрд╛рдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд┐рдЫрд▓реЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, + рдСрдкрд░реЗрдЯрд░ рдПрдХ рдмрдврд╝реЗ рд╣реБрдП рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ:

рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рд╕реЗрдХреНрд╢рди рдФрд░ рдХреНрдпреБрд░реЗрдЯреЗрдб рдлрдВрдХреНрд╢рди рдХреИрд╕реЗ рджрд┐рдЦреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдХреГрддреНрд░рд┐рдо рдХреЛрдб рд▓реЗрдВ:
ops = [ ( + ) , ( * ) , ( - ) ]
func x y op = x `op` y
рдкрд░рд┐рдгрд╛рдо = рдирдХреНрд╢рд╛ ( рдлрдВрдХ 2 3 ) рдСрдкреНрд╕
рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВ: рдСрдкреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдлрдВрдХ - рддрд░реНрдХ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдкрд░ рдСрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ: [5, 6, -1], рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди (func 2 3) рдСрдкреНрд╕ рд╕реВрдЪреА рд╕реЗ рд╕рднреА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ (func 2 3) рдПрдХ рддрд░реНрдХ рдпреБрдХреНрдд рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╣реИ рдЬреЛ рдЦрд╛рд▓реА рд░рд╣рддрд╛ рд╣реИред рдХреЛрд╖реНрдардХ рдореЗрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рднреА рдШреБрдВрдШрд░рд╛рд▓реЗ (рдпрд╛ рдмрд▓реНрдХрд┐ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╣реА рд╣рдорд╕реЗ рдЪреБрд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рдЕрд░реНрдерд╛рдд, рджреЛ рддрд░реНрдХ рдЪреБрдиреЗ рдЧрдП рдереЗред рдпрд╣ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЛрдб рдФрд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЕрдЬреАрдм рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
nullMap = map null
рдЬрдм рддрдХ рдЖрдкрдХреЛ рдкрддрд╛ рди рдЪрд▓реЗ рдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдЕрд╢рдХреНрдд рдХрд╛рд░реНрдп рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рддрд░реНрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рддрд░реНрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рддрд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЦрд╛рдВрдЪреЗ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЦрд╛рдВрдЪреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ arity рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рдФрд░ nullMap рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╣реИ:


рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ, рдЕрдиреБрдкрд╛рдд рдХрд╛ рд╕рд╡рд╛рд▓ рдЕрднреА рднреА рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдкрд░ рдХрд▓реНрдкрдирд╛ рдХреА рдХреБрд▓ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрднрд╡ рд╣реИред рддрддреНрд╡реЛрдВ рдХреА рдКрдВрдЪрд╛рдИ, рддрд░реНрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА, рдЦрд╛рд▓реА рдЦрд╛рдВрдЪреЗ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рдЧрд╣рд░рд╛рдИ, рдкрд░рд┐рдорд┐рдд рддрддреНрд╡реЛрдВ рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рд▓рдВрдмрд╛рдИ, рдкрд┐рд░рд╛рдорд┐рдб рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХрд╛ рдЖрдХрд╛рд░ рдЦреБрдж рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рджреНрднрд╛рд╡ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдЬрд╛рджреВ рдХрд╛ рд╕реБрдирд╣рд░рд╛ рдЕрдиреБрдкрд╛рдд рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм рдХреБрдЫ рдмреЗрд╣рддрд░ рдХрд░рддрд╛ рд╣реИ!
рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рд╕рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдХрд╛ рднреА рдПрдХ рдмрдпрд╛рди рд╣реИ, рдФрд░ рдпрд╣ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реА рдХреЛрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЧрд╛рдпрдм рд╣реЛ - рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ (рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ n рдирдХрд╛рд░рд╛рддреНрдордХ рдЖ рд╕рдХрддрд╛ рд╣реИ)
fact n = if n == 0 рддреЛ 1 рдФрд░ рддрдереНрдп ( n - 1 ) * n
рдЖрдк рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреЛрдб рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рдФрд░ рдЕрдиреНрдп рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдкрд░ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рддрдереНрдп рд╕рдорд╛рд░реЛрд╣ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдлреЗрдж рд╕реНрдерд╛рди рдХреА рдЧрд┐рдирддреА рдХрд░рдХреЗ):
fact n = рдЕрдЧрд░ n == 0
рдлрд┐рд░ 1
рдФрд░ рддрдереНрдп ( n - 1 ) * n
рд╢рд╛рдпрдж рдпреЗ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд╢рдмреНрджреЛрдВ рдХрд╛ рднреЛрд▓реА рд╣рд╕реНрддрд╛рдВрддрд░рдг рдЕрдЧрд░, рдлрд┐рд░ рдФрд░ рдкрд┐рд░рд╛рдорд┐рдб рдХреА рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реА рдкрд░рддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдЕрд▓рдЧ-рдерд▓рдЧ рддрддреНрд╡ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:


рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдВрдЯ рджреЗрдХрд░, рд╡реНрдпрдХреНрддрд┐ рдмрд╛рдж рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдХреБрдЫ рдЕрдВрддрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЦрд┐рд░ рд╣реИ рддреЛ рдХреНрдпрд╛? рдпрд╣ рддрдм рд╣реИ рдЬрдм рдПрдХ рдмреВрд▓рд┐рдпрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рддреНрдп рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЯреНрд░реВ рдХреЗ рд╕рд╛рде рдореИрдЪ рдХреЗ рд▓рд┐рдПред рд╕рдВрдпреЛрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░, рд░рдЪрдирд╛рдХрд╛рд░, рдкрд╣реЗрд▓реА рдФрд░ рдХреБрдЫ рдФрд░ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рд╕рдВрдпреЛрдЧ рд╣реИ, - рдкрд┐рди рдирд╛рд▓реА рдХреЛ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ; рдХреЛрдИ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ - рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ ... рдЖрдЗрдП рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реНрдХреЗрдЪ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЖрдЧреЗ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╕реНрдерд┐рддрд┐, рдЖрдХрд╛рд░, рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдЧрд░-рддрдм-рддрдм рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЪреВрдВрдХрд┐ рд╣рдо рдЦреБрдж рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЦрд╛рддрд┐рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреБрдЫ рдЕрдиреБрднрд╡рдЬрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рдкрд░реЗ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢рд╛рдпрдж рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░-рдФрд░-рдФрд░, рдЗрди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддрддреНрд╡, рдПрдХ рдЕрдЪреНрдЫреА рдЬреЛрдбрд╝реА рдХреА рддрд░рд╣, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд рдХреЗрд╕-рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд╕реАрдорд┐рдд рд╣реИред рд╣рдо рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рдлрдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
fact n = case n == 0 рдХрд╛
рд╕рддреНрдп -> рез
рдорд┐рдереНрдпрд╛ -> рддрдереНрдп ( n - 1 ) * n
рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдХреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдПрдХ рдирдпрд╛ рд╢рдмреНрджрд╛рд░реНрде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ: рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рдиред рдпрд╣рд╛рдВ, рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЕрднреА рддрдХ рдПрдХ рд╕рднреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрдХреЗрдЪреЗрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ "->" рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпреВрдмреНрд╕ рдкрд░ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВ: рдпрд╣рд╛рдВ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рднрд╛рдЬрди рд╣реИ, рдФрд░ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЧрд╣рд░реА рддреБрд▓рдирд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реНрдпреВ рдкреИрдЯрд░реНрди рднрд╛рд╖рд╛ рдХреЗ рдЬреБрдбрд╝реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рд╕рд░рд▓, рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬрд╣рд╛рдБ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдорд╛рдорд▓реЗ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
toHabrFormat ( s , ( ch: [ ] ) ) = s ++ [ ch ]
toHabrFormat a @ ( s , b @ ( ch: inStr ) ) = let рд╕реНрд╡рд░реВрдкрд┐рдд = ( foldr1 ( <>> ) рд╕реНрд╡рд░реВрдкрдХ ) a
рдХреЗ рд╕реНрд╡рд░реВрдк рдореЗрдВ
рдмрд╕ ( рд░реЗрд╕ , [ ] ) -> рд░реЗрд╕
рдмрд╕ ( Res , ( r: rs ) ) -> toHabrFormat ( res ++ [ r ] , rs )
рдХреБрдЫ рднреА рдирд╣реАрдВ -> рд╣реИрдлрдмреНрд░рдореЗрдЯ ( s + [ ch ] , inStr )
рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЬрдмрдХрд┐ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕реВрдЪрд┐рдпреЛрдВ, рдЯреБрдкрд▓реНрд╕ рдЖрджрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ, рдорд╛рдорд▓рд╛-рдирд┐рд░реНрдорд╛рдг рдЕрд╕рдВрдмрджреНрдз рд╣реЛрдЧрд╛ред
рдЕрдм, рдлрд┐рд░ рднреА, рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдирд╛рдо рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддрдереНрдпрд╛рддреНрдордХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рддрдереНрдп рдПрди | n == 0 = 1
| n / = 0 = fact ( n - 1 ) * n
рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рдирд╛ рд╣реИред рдпреЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдореЗрд╢рд╛ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ - рд╕рдЪ рдпрд╛ рдЧрд▓рддред рд╡реЗ рдХреБрдЫ рдлрд╝рд┐рд▓реНрдЯрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╢рд░реАрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд▓рдВрдШрди рдирд╣реАрдВ, рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реБрдП, рдЖрдк рдХреБрдЦреНрдпрд╛рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдЧрд░ред рдЖрдЗрдП рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ:

рд╕рдорд╛рдирддрд╛ рдХреЗ рд╕рд╛рде рдмреЙрдХреНрд╕ ("рдкреБрд▓") рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдЙрднрд░рд╛, рдЬреИрд╕реЗ рдХреЛрдб рдореЗрдВред рдФрд░ рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ, рдпрд╣ рдХреБрдЫ рдФрд░ рдмрдврд╝ рдЧрдпрд╛ - рднрд╛рдЧреЛрдВ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреГрдердХреНрдХрд░рдг (рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо; рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ; рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐)ред рдЖрдк рдФрд░ рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдЙрдиреНрд╣реЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд░рдЦреЗрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдкрд░рд┐рд╕реАрдорди рд╣реЛред

рдХреЛрдб рдореЗрдВ, рдЧрд╛рд░реНрдб рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЪрд░рд┐рддреНрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ '|' рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЛрдб рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд▓рдЧреЗрдЧрд╛:
fact n n == 0 = 1
n / = 0 = fact ( n - 1 ) * n
рд╕рдВрдХрд▓рдХ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╢рдмреНрдж рддрдереНрдп рдХреЗ рдмрд╛рдж рдЕрдХреНрд╖рд░ рдФрд░ рдкреНрд░рддреАрдХ рдХреНрдпрд╛ рд╣реИрдВред рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкрдЯреНрдЯреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреВрд▓рд┐рдпрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдордВрдЪ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдХреБрдЫ рдбрд╛рд▓рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ; рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ "рджреАрд╡рд╛рд░":

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЗрддрдирд╛ рд╕рд╣рдЬ рд╣реИ? рдПрдХ рдареЛрд╕ рдмреЙрдХреНрд╕ рдПрдХ рдмрд╛рдзрд╛, рдкреНрд░рддрд┐рдмрдВрдз рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рд╕реНрдерд┐рддрд┐, рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ред рдпрджрд┐ рд╣рдо рдПрдХ рдШрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ рдЧрд╛рд░реНрдб рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рддрдХ рдмрдврд╝рддреЗ рд╣реБрдП, рдпрд╣ рдмрд╕ рджреАрд╡рд╛рд░ рд╕реЗ рдЯрдХрд░рд╛рдПрдЧрд╛ - рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд┐рд╕реА рднреА рдирд┐рдХрд╛рдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреБрдВрдЬреА рдирд┐рд╣рд┐рдд рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рджреАрд╡рд╛рд░ рдореЗрдВ рдПрдХ рдЫреЗрдж рдмрдирд╛рддреЗ рд╣реИрдВ? рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕рдЪ рд╣реИ, рддреЛ рдХреНрдпреВрдм рдЫреЗрдж рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЬрд╣рд╛рдВ рдЬрд░реВрд░рдд рд╣реЛрдЧреА, рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ред рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рднреА рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ: рддреАрд░ рд╡рд╛рд▓реЗ рдкреБрд▓реЛрдВ рдХреЛ рдЗрд╕реЗ рджрд┐рдЦрд╛рдиреЗ рджреЗрдВ, рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░реЗрдВрдЧреЗ:

рдмрд╣реБрдд рдмреЗрд╣рддрд░! рдЕрдм рд╣рдо рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ, рдпрд╣рд╛рдВ рд╣рдо рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░, рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ, рдЗрд╕реЗ рдЖрд░реНрдХрд┐рдЯреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдЯрдЖрдЙрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдпрд╣рд╛рдБ рдХрд╛рдо рдЖрдПрдВрдЧреЗред рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗ рдмрд┐рдирд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛:

рддреЛ, рдЧреНрд░рд╛рдлрд┐рдХ рднрд╛рд╖рд╛ рдХрд╛ рдЖрдзрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрдм рд▓рдЧрднрдЧ рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕реВрдЪрд┐рдпреЛрдВ, рдЯреБрдкрд▓реНрд╕ рдФрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдЬреИрд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рд╡реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХрдЯ рд╣реЛрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, do-constructs, рд╕реВрдЪреА рдЬрдирд░реЗрдЯрд░, as-pattern, рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░, рд╡рд░реНрдЧ рдЕрд╡рддрд╛рд░, рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЕрдиреНрдп рдЕрджреНрднреБрдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рдеред
рдЖрдЗрдП рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдбреАрдЯреА рдФрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХрдЯреМрддреА рдХреЗ рдмрдЬрд╛рдп рдПрд░рд┐рдЯреА рдХреЛ рдкреНрд░реЛрдЯреНрд░реВрд╢рд┐рдпрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╕, рдЯреНрд░реВ рдФрд░ рдлрд╛рд▓реНрд╕ рд╡рд╛рд▓реА рддрд╕реНрд╡реАрд░ рддрдм рдЧрд▓рдд рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рджреЛрдиреЛрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреА рдЕрд░реИрд╕реНрдЯ рдЬреАрд░реЛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╕реНрдЯ 1 рдХреА рдпреЛрдЧреНрдпрддрд╛ 1 рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд▓реАрдб рд╣реЛрдЧреАред

рд╕реВрдЪрд┐рдпрд╛рдБ infix рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ: ":" (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реИ [1])ред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдо рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓рд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдЬрдм рджреЛрдиреЛрдВ "рдорд╣рддреНрд╡рд╣реАрди" рддрддреНрд╡ рдФрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдХреЛрдб рд╣реИ:
someFunc someList = рдХреЗрд╕ рдХреЗ рдХреБрдЫ рдХрд▓рд╛рдХрд╛рд░
( X1: x2: _ : xs ) -> рдмрд╕ ( X1 , x2 )
( X1: [ ] ) -> рдмрд╕ ( X1 , X1 )
[ ] -> рдХреБрдЫ рдирд╣реАрдВ
рд╣рд╛рд╕реНрдХреЗрд▓ рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реНрд╡рдпрдВ рдЙрдирдХреЗ рд╕рд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдорд╣рддреНрд╡рд╣реАрди рддрд░реНрдХ рдХреЛ рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЛ рдЦрд╛рд▓реА рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рд╣рдо рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред рдХреЛрдб рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рдореЗрдВ, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдХреЗрд╡рд▓ рддрд░реНрдХ X1, X2 рдФрд░ xs рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, рдПрдХреНрд╕ 1 рдФрд░ рдПрдХреНрд╕ 2 рд╕рд╛рдордиреЗ рдХреА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡ рд╣реИрдВ, рдФрд░ рдПрдХреНрд╕ рд╕рдВрднрд╡рддрдГ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЗ рдмрд╛рдХреА рд╣реИрдВред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред


рд╣рд╛рдВ, рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд▓рдЧ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдорд╣рддреНрд╡рд╣реАрди" рддрддреНрд╡ рдкрд╕рдВрдж рд╣реИред рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдареАрдХ рд╣реИ, рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ: рдмрд╕ рдЯреБрдкреНрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рдЖрдо рдмреЛрд░реНрдб рдкрд░ рдЦрд╛рдВрдЪреЗ рдореЗрдВ рд░рдЦреЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯрдкрд▓ рдХрд╛ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЖрдзрд╛рд░ рдкрддрд▓рд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд░рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ! рдЗрд╕рд▓рд┐рдП, рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдХреБрдЫ рдбрд┐рдЬрд╝рд╛рдЗрдиреЛрдВ рдХреЛ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд░реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдЕрд░реНрдз-рд╕рдорд╛рдкреНрдд рдпреЛрдЬрдирд╛ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХреБрдЫ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдХреБрдЫ рддреНрдпрд╛рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдорд╛рди рд░рд╣реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдХрд▓реНрдкрдирд╛ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рди рдереЗред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рд░рдВрдЧреЛрдВ рдФрд░ рд░рдВрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдлреЛрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИ, рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдерд╛: рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдЧреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдмрдХреНрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдЕрдВрджрд░ рдбрд╛рд▓ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рд╕рднреА рдЯрд┐рдордЯрд┐рдорд╛рдирд╛ред Perpetuate, рддреЛ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд▓рд╛рд╕ рдореЗрдВ рдХреЛрдбред рдпрд╣ рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

рд╕реМрдВрджрд░реНрдп, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИред рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд▓рд╛рдЧрдд рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдкрдХрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ 3 рдбреА рджреГрд╢реНрдпред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЧреНрд░рд╛рдлрд╕рд░реНрд╡рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд╛рд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рд╕рднреА рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛;
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп, рдХреБрдЫ рдбрд┐рдЬрд╝рд╛рдЗрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЙрдирдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдЬреЛ рддреИрдпрд╛рд░ рд╣реИ рд╡рд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИредрдпрд╣ рдПрдХ рдХреНрд░реЙрд╕ рдЖрд░реНрдЯрд┐рдХрд▓ рд╣реИред "рд╣рд╛рд╕реНрдХреЗрд▓ - рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░" рд▓реЗрдЦ рдореЗрдВ рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ редрдкреАрдПрд╕ рдореИрдВ рдХрд╛рдлреА рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдирд╣реАрдВ рдорд╛рдВрдЧрддрд╛ред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реЗрдмреНрд░рд╕реНрдЯреНрд░реЙрдЬ рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд░рд╣рд╛ рд╣реИред[рез] - рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реБрдзрд╛рд░: it-talk.org/post76900.html#p76900