15 рдорд┐рдирдЯ рдореЗрдВ рдореЛрдирд╛рдб

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


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

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

рдкреНрд░реЗрд░рдХ рдЙрджрд╛рд╣рд░рдг


рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреАрди рдореБрджреНрджреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЙрдиреНрд╣реЗрдВ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ: рд╕рд╛рдорд╛рдиреНрдп рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдФрд░ рдореЛрдирд╛рдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдлрд┐рд░ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред

1. рд▓реЙрдЧрд┐рдВрдЧ


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВ: f1 , f2 рдФрд░ f3 , рдЬреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреНрд░рдорд╢рдГ 1, 2 рдФрд░ 3 рддрдХ рдмрдврд╝рд╛рдХрд░ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕рдВрджреЗрд╢ рднреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрд╢рди рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИред
 def f1(x): return (x + 1, str(x) + "+1") def f2(x): return (x + 2, str(x) + "+2") def f3(x): return (x + 3, str(x) + "+3") 

рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ x рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЪреЗрди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо x+1+2+3 рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдПрдХ рдорд╛рдирд╡-рдкрдардиреАрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
 log = "Ops:" res, log1 = f1(x) log += log1 + ";" res, log2 = f2(res) log += log2 + ";" res, log3 = f3(res) log += log3 + ";" print(res, log) 

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреАрд░рд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЕрдкрдиреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, res рдФрд░ log рдЪрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрд┐рдЧрд╛рдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдореБрдЦреНрдп рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ f3(f2(f1(x))) ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ f1 рдФрд░ f2 рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ f2 рдФрд░ f3 рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирдП рдХрд╛рд░реНрдп рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
 def unit(x): return (x, "Ops:") def bind(t, f): res = f(t[0]) return (res[0], t[1] + res[1] + ";") 

рдЕрдм рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 print(bind(bind(bind(unit(x), f1), f2), f3)) 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ x=0 рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ v1 , v2 рдФрд░ v3 unit рдФрд░ bind рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдорд╛рди bind ред



unit рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ x рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЯреНрдпреВрдкрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред bind рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдЪрд░ t рдореЗрдВ рдЬрдорд╛ рдХрд░рддрд╛ t ред

рд╣рдо рдЗрд╕реЗ bind рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░рдЦрдХрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЕрдм, рдЕрдЧрд░ рд╣рдореЗрдВ рдлрдВрдХреНрд╢рди f4 рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЪреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ:
 bind(f4, bind(f3, ... )) 

рдФрд░ рд╣рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

2. рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА


рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
 def f1(x): return x + 1 def f2(x): return x + 2 def f3(x): return x + 3 

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ x+1+2+3 рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, x , x+1 , x+1 , x+1+2 рдФрд░ x+1+2+3 ред

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рд░рдЪрдирд╛ рдпреЛрдЧреНрдп рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ f3(f2(f1(x))) рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред

рдЖрдЗрдП рд╕рдорд╕реНрдпрд╛ "рд╕рд┐рд░ рдкрд░" рд╣рд▓ рдХрд░реЗрдВ:
 lst = [x] res = f1(x) lst.append(res) res = f2(res) lst.append(res) res = f3(res) lst.append(res) print(res, lst) 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рд╣рдо f4 рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рд╕рд╣реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
 def unit(x): return (x, [x]) def bind(t, f): res = f(t[0]) return (res, t[1] + [res]) 

рдЕрдм рд╣рдо рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 print(bind(bind(bind(unit(x), f1), f2), f3)) 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ x=0 рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдлрд┐рд░ рд╕реЗ, v1 , v2 рдФрд░ v3 unit рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рдХреЛ bind рд╣реИрдВред



3. рд░рд┐рдХреНрдд рдорд╛рди


рдЖрдЗрдП рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЗрд╕ рдмрд╛рд░ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рдеред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ Employee рд╡рд░реНрдЧ рд╣реИ:
 class Employee: def get_boss(self): # Return the employee's boss def get_wage(self): # Compute the wage 

Employee рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рдмрдВрдзрдХ ( Employee рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдФрд░ рдЙрджреНрджреЗрд╢реНрдп) рдФрд░ рдПрдХ рд╡реЗрддрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЙрдЪрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреА рд╣реИрдВ (рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдкрд╛рд╕ рдкреНрд░рдмрдВрдзрдХ рдирд╣реАрдВ рд╣реИ, рд╡реЗрддрди рдЕрдЬреНрдЮрд╛рдд рд╣реИ)ред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдиреЗрддрд╛ рдХреЗ рд╡реЗрддрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдмрдВрдзрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдпрд╛ рдЙрд╕рдХрд╛ рд╡реЗрддрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо None рд▓реМрдЯрд╛рдПрдЧрд╛ред

рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
 print(john.get_boss().get_wage()) 

рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рднреА рд╡рд┐рдзрд┐ рд╡рд╛рдкрд╕ None рдЖрддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:
 result = None if john is not None and john.get_boss() is not None and john.get_boss().get_wage() is not None: result = john.get_boss().get_wage() print(result) 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо get_boss рдФрд░ get_wage рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ), рддреЛ рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ:
 result = None if john is not None: boss = john.get_boss() if boss is not None: wage = boss.get_wage() if wage is not None: result = wage print(result) 

рдЧрдгрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдХреЛрдб рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рддреАрди рдиреЗрд╕реНрдЯреЗрдб if рдХрд╛рд░рдг рдЦрд░рд╛рдм рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
 def unit(e): return e def bind(e, f): return None if e is None else f(e) 

рдФрд░ рдЕрдм рд╣рдо рдкреВрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
 print(bind(bind(unit(john), Employee.get_boss), Employee.get_wage)) 

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

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╣рдо рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ john.get_boss() рдмрдЬрд╛рдп Employee.get_boss(john) рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрдм рдЬреЙрди рдХреЗ рдкрд╛рд╕ рдПрдХ рдиреЗрддрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН john.get_boss() None рджреЗрддрд╛ рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖


рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ f1 , f2 , тАж , fn ред рдпрджрд┐ рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рдкрддреНрд░ fn(тАж f2(f1(x)) тАж) рдПрдХ рд╕рд░рд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ v1 , v2 , тАж , vn рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



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

1. рдЗрдВрдкреАрд░рд┐рдпрд▓ рдирд┐рд░реНрдгрдп


рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



f1 рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ f1 рд╣рдордиреЗ рдХреБрдЫ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдпрд╛ред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛, рджреВрд╕рд░реЗ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдПред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдХреБрд▓ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА, None рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ None ред

2. рдореЛрдирд╛рдб


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ, рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд┐рд░реНрдгрдп рд╣рдореЗрд╢рд╛ рд╡рд╛рдЪрд╛рд▓рддрд╛, рджреЛрд╣рд░рд╛рд╡ рдФрд░ рднреНрд░рд╛рдордХ рддрд░реНрдХ рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдордиреЗ рджреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдП: unit рдФрд░ bind ред рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдореЛрдирд╛рдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред bind рдлрдВрдХреНрд╢рди рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдмрдХрд┐ unit рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
 bind(bind( ... bind(bind(unit(x), f1), f2) ... fn-1), fn) 

рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрд░реЗрдЦ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



unit(x) рд▓рд┐рдП рдПрдХ рдХреЙрд▓ v1 рдХрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ bind(v1, f1) рдПрдХ рдирдпрд╛ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдп v2 рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЧрд▓реА рдХреЙрд▓ рдореЗрдВ bind(v2, f2) ред рдЕрдВрддрд┐рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди unit рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдФрд░ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдо рдЧрдгрдирд╛ рдХреЗ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЛрдирд╛рдб рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ ( рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдореЛрдирдб рдпрд╛ рдУрдПрд╕рд▓реИрд╢ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред ) рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреБрдЫ рд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбреА-рдЯреВ- рдпреВрдЬрд╝ рдореЛрдирдб ( unit рдФрд░ bind рдлрд╝рдВрдХреНрд╢рдВрд╕) bind ред

рдЪреЗрди рдлрдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП, unit рдФрд░ bind рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ bind рдХреЗ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдореЛрдиреИрдбрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЖрд░реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╡реЗрд░рд┐рдПрдмрд▓ v1 , v2 , тАж , vn рдкреНрд░рдХрд╛рд░ рдПрдХ рдореЛрдирдбрд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдд рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рднрд┐рдХреНрд╖реБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдмрд╛рд░-рдмрд╛рд░ bind рдХреЙрд▓ рдЕрд╕рднреНрдп рджрд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЕрдиреНрдп рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
 def pipeline(e, *functions): for f in functions: e = bind(e, f) return e 

рдЕрдм рдЗрд╕рдХреЗ рдмрдЬрд╛рдп
 bind(bind(bind(bind(unit(x), f1), f2), f3), f4) 

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 pipeline(unit(x), f1, f2, f3, f4) 


рдирд┐рд╖реНрдХрд░реНрд╖


рдореЛрдирд╛рдб рдПрдХ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдпрд╣ рд▓реЙрдЧрд┐рдВрдЧ рдпрд╛ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдЬреИрд╕реА рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ
рдпрд╣ рдХреЛрдб рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рднрд┐рдХреНрд╖реБрдУрдВ рдХреА рдПрдХ рд╕рддрд╣реА, рд╕рд╣рдЬ рд╕рдордЭ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛
  2. рдЕрдЬрдЧрд░ рдореЗрдВ рд░рд╛рдХреНрд╖рд╕ (рдЕрдЪреНрдЫрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде!)
  3. рдореЛрдирд╛рдж рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рдордпрд░реЗрдЦрд╛

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


All Articles