рддреЛ, рдЖрдк рдЕрднреА рднреА Hindley-Milner рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ? рднрд╛рдЧ реи

рднрд╛рдЧ 1 рдореЗрдВ, рд╣рдордиреЗ рд╣рд┐рдВрджрд▓реЗ-рдорд┐рд▓рдирд░ рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ , рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:

рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдФрдкрдЪрд╛рд░рд┐рдХрдХрд░рдг


рд╣рдо рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрдВрдЧреЗ; рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдореМрдЬреВрджрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдП, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдФрд░ рдпрд╣ рджрд░реНрд╢рд╛рдПрдВ рдХрд┐ рдХреЗрд╡рд▓ рд╡реИрдз рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  1. рдЪрд░ рдорд╛рдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВред
  2. рдпрджрд┐ e рдПрдХ рдордирдорд╛рдирд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдФрд░ x рдПрдХ рдордирдорд╛рдирд╛ рдЪрд░ рд╣реИ, рддреЛ ╬╗x.e рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдпрд╣ e рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп (рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ) рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ x , рдЕрд░реНрдерд╛рддреН рд╢рд╛рдорд┐рд▓ рд╣реИрдВред x +2 , рдФрд░ рдлрд┐рд░ ╬╗x.e рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ x рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ x рджрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ e рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ
     function(x) { return x^2 + 2; } 
  3. рдпрджрд┐ f рдФрд░ e рд╡реИрдз рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ, рддреЛ f(e) рднреА рдорд╛рдиреНрдп рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдпрджрд┐ x рдПрдХ рдЪрд░ рд╣реИ, рдФрд░ e 1 рдФрд░ e 0 рд╡реИрдз рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ x рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ e 1 рдХреЗ рд╕рд╛рде e 1 рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рднреА рдПрдХ рдорд╛рдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреЗрдЧрд╛ред рдЕрд░реНрдерд╛рдд, рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, e 1 = x and +2 рдФрд░ e 0 = y/3 , рддреЛ x = e 0 рдХреЛ e 1 рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░, рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (y/3) for +2 ред
    [рдПрдирдмреА: рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдирд┐рд░рд░реНрдердХ рд╣реИ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдХреИрд▓рдХреБрд▓рд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ e 0 рдХреЛ x 1 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрдореВрд░реНрдд ╬╗x. рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ ╬╗x. e рез рд╕реЗ e реж ред рдпрд╣ рдХреЗрд╡рд▓ рддрдерд╛рдХрдерд┐рдд рд▓реЗрдЯ-рдкреЛрд▓реАрдореЛрд░реНрдлрд┐рдЬреНрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ ред]


рдХреБрдЫ рднреА рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рдПрдХ рддрд░рдл: рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИ рд╡рд╣ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдЧрд╛: "рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ, рдореИрдВ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?" рдХреЗрд╡рд▓ рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ x 2 +2 2 (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд┐рд░реНрдл 2) рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЕрд░реЗ, рд╢реВрдиреНрдп рдХрд╛ рдХреНрдпрд╛? рдЗрди рдирд┐рдпрдореЛрдВ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 0. рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд▓реИрдореНрдмреНрдбрд╛ рдХреИрд▓рдХреБрд▓рд╕ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдХрд┐ 0,1, ..., +, ├Ч, -, / рдЬреИрд╕реА рд╕рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ, рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ, рддрд╛рд░реЛрдВ рдЖрджрд┐ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреИрдЯрд░реНрди рдореЗрдВ рдЬреЛ рд╣рдо рд▓реИрдореНрдмреНрдбрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЦрдВрдб рд╣реИред рдпрд╣ рд▓реИрдореНрдмреНрдбрд╛ рдХреИрд▓рдХреБрд▓рд╕ рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╛рдердорд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЪрд╛рд░ рд╕рд░рд▓ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдЪрд╛рд░ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рд╣реА рд╕рдВрдЦреНрдпрд╛рдУрдВ, рддрд╛рд░реЛрдВ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╢рдХреНрддрд┐ рд╣реИред рд╕рдВрдЪрд╛рд▓рди рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рджрд╛рд╡рд╛ рдФрдкрдЪрд╛рд░рд┐рдХрдХрд░рдг рдЯрд╛рдЗрдк рдХрд░реЗрдВ


рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдРрд╕реЗ рдорд╛рдиреЗрдВ рдХрд┐ " e " рд╣рдорд╛рд░реА рдмреЗрд╕-рднрд╛рд╖рд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рд╣рдорд╛рд░реА рдореЗрдЯрд╛-рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА:
 x Math.pow(x,2) [1,2].forEach ( function(x) { print(x); } ) 


рдлрд┐рд░, рдпрджрд┐ t рдПрдХ рдордирдорд╛рдирд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рддреЛ рд╣рдо " e рд╣реИ рдЯрд╛рдЗрдк t " рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
e:t

рдЬреИрд╕реЗ e , t рд╣рдорд╛рд░реА рдореЗрдЯрд╛-рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдЪрд░ рд╣реИ рдЬреЛ рдЖрдзрд╛рд░ рднрд╛рд╖рд╛ (рдЗрдВрдЯ, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЖрджрд┐) рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╕рд┐рд░реНрдл e , t рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд┐рд▓рд╛рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред

рдЖрдк рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореВрд░реНрдд рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЛ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪрддрд╛ рд╣реВрдВ:
  1. рдпрджрд┐ s рдФрд░ t рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рддреЛ t тЖТ s; рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ t рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ s
  2. рдпрджрд┐ r рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдмрдирд╛ рд╣реИ (рдЗрд╕реА рддрд░рд╣ рд╕реЗ t тЖТ s , t рдФрд░ s рд╕реЗ рдмрдирд╛ рд╣реИ s, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ, рдмрджрд▓реЗ рдореЗрдВ, рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ ╬▒ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рд╣реИ, рддрдм ╬▒.r рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред
    рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛, рдКрдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рдЕрд░реНрдерд╣реАрди рд▓рдЧрддрд╛ рд╣реИ:
     function (x) { return x; } 

    рдпрд╣ рдлрдВрдХреНрд╢рди String тЖТ String рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрд╛ Int тЖТ Int ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП t рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ t тЖТ t ред рд╣рдо рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЯрд╛рдЗрдк say tt тЖТ t ред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ String тЖТ String рдпрд╛ t тЖТ t рдПрдХ "рдореЛрдиреЛрдЯрд╛рдЗрдк" рд╣реИред тАЭTt тЖТ t рдПрдХ" рдмрд╣реБрд╡рдЪрди "рд╣реИред рдКрдкрд░ рд▓рд┐рдЦреЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХ рд╕рд╛рд░ рдмрд╣реБрдкрдж one tt тЖТ t , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ t рдпрд╣ рдЯрд╛рдЗрдк t тЖТ t ред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдРрд╕рд╛ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╕рд╛рд░рд╛рдВрд╢ рд░рд┐рдХреЙрд░реНрдб рдорд┐рд▓рддрд╛ рд╣реИ:
    ╬╗ xx: тИА ╬▒.╬▒ тЖТ ╬▒


рджрд╛рд╡рд╛ рдФрдкрдЪрд╛рд░рд┐рдХрдХрд░рдг рдЯрд╛рдЗрдк рдХрд░реЗрдВ


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

рдорд╛рди рд▓реАрдЬрд┐рдП рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдХрд┐ duck рдЪрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ Animal ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВрдиреЗ speak рдХрд┐ speak рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ Animal -> String ред
рдлрд┐рд░ рдореИрдВ рдпрд╣ speak(duck) рд╕рдХрддрд╛ speak(duck) рдХрд┐ speak(duck) String рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред

рдФрд░ рдЗрд╕ рд░реВрдк рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рддрд░реНрдХ рдПрдХ рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИред


рд╣рдо рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрддреЗ рд╣реИрдВ:


рдЗрд╕ рдирд┐рдпрдо рдХреЛ [рдРрдк] (рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрд╕ рд╕рд╡рд╛рд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рд╣рдо рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╢реЗрд╖ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рд╣рдо рдЙрди рд╕рднреА рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдКрдкрд░ рдорд┐рд▓реЗ рдереЗ:


рдЕрдЧрд▓рд╛ рдХрджрдо:


рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреАрдПрдо рдХреА рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In185686/


All Articles