рдПрд░реНрд▓реИрдВрдЧ рдореЗрдВ рдХрднреА-рдХрднреА рдЗрд╕ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ
рд▓реЗрдЦ рдорд┐рд▓рд╛ ред
рд▓реЗрдЦрдХ рдиреЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рддрд░реНрдХ рджреЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
рддреБрд░рдВрдд рдЬреАрдереБрдм рдХрд╛
рд▓рд┐рдВрдХ рджреЗрдВред
рддреЛ, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░
рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЛ
рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЯреНрдпреВрдкрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ 3 рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рджреА рдЬрд╛рдПрдЧреАред
рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
-module(memoize).
рдЦреИрд░, 2 рдХреЙрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг:
>> timer:tc(memoize,fact,[1000]). {1282, ... }. >> timer:tc(memoize,fact,[1000]). {9, ... }.
рдпрд╛рдиреА рд╡реГрджреНрдзрд┐ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ :)
рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╣реЛрд▓реАрд╡рд░ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рд╣реЗ ...
рдкреБрдирд╢реНрдЪрдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА - рдореИрдВ рдЖрдЧреЗ parse_transform рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдкреАрдврд╝реА рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ...