рдЫреЛрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд░рд▓рд╛рдВрдЧред рдЕрдзреНрдпрд╛рдп 2: рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрд╛рд░реНрдп

рдЫрд╡рд┐ рд╢реБрдн рд╕рдВрдзреНрдпрд╛, рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рдЪреЗрдиред рд╣рдо рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдХреЗ рд▓рд┐рдП рдПрд░рд▓рд╛рдВрдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдордиреЗ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдЯреБрдкрд▓реНрд╕ рдХреЛ рджреЗрдЦрд╛ред рд╣рдордиреЗ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдФрд░ рд╕реВрдЪреА рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕реАрдЦрд╛ред

рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред



рдЕрдзреНрдпрд╛рдп рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИрдВ ред

рдПрд░рд▓реИрдВрдЧ рдореЗрдВ, рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо "рд╡реИрд╢реНрд╡рд┐рдХ" рдХрд╣рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, length , hd , tl ) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рднреА рд╣реИрдВред рдпреЗ "рдмрд┐рд▓реНрдЯ-рдЗрди рдлрд╝рдВрдХреНрд╢рдВрд╕" рд╣реИрдВ (рдЗрдиреНрд╣реЗрдВ BIF - рдмрд┐рд▓реНрдЯ-рдЗрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдпреЗ erlang рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдореЙрдбреНрдпреВрд▓


рдПрдХ рдореЙрдбреНрдпреВрд▓ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЬреЛ рдПрдХ рдирд╛рдо рдХреЗ рддрд╣рдд рдПрдХрдЬреБрдЯ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, Erlang рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдПрдХ рд╕рдорд╛рди рдЙрджреНрджреЗрд╢реНрдп рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп lists рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВ, рдФрд░ I / O рдлрд╝рдВрдХреНрд╢рди io рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВред

рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: ModuleName:FunctionName(Arg1, Arg2, ..., ArgN) ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд░рд┐рдд рдЯреНрдпреВрдкрд▓ рдХреЗ рддрддреНрд╡ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ element рдХрд╣рд╛ рдЬрд╛рддрд╛ element рдФрд░ рдпрд╣ erlang рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
 1> erlang:element(3, {23,54,34,95}). 34 

рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рд▓рд┐рдЦрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


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

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдирд┐рдореНрди рд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ: -Name(Arg). ред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдПрдХ рдкрд░рдорд╛рдгреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

-рдореЙрдбреНрдпреВрд▓ (рдирд╛рдо)ред
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓ рдмрд╕ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрд░рдорд╛рдгреБ рд▓реЗрддрд╛ рд╣реИ - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдоред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ mySuperModule рдХрд╛ mySuperModule рджреЗрдВред
 -module(mySuperModule). 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ рд╣реИред рд╣рдордиреЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рд┐рдд рдХреА рд╣реИ рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдмреЗрдХрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рднреА рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдпрд╣ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рд╣реИред

-рдПрдХреНрд╕рдкреЛрд░реНрдЯ ([Fnct1 / Arity, Fnct2 / Arity, ..., FnctN / Arity]]
рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА - рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рд╕реНрд╡реАрдХреГрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдпрд╣рд╛рдБ Fnct рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ Arity рдЙрди рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ (arity) рд▓реЗрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдЪрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧрд╛: add , subtr , subtr , subtr (рдЬреЛрдбрд╝, рдШрдЯрд╛рд╡, рдЧреБрдгрд╛, рднрд╛рдЧ)ред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рджреЛ рддрд░реНрдХ рд▓реЗрдЧрд╛ред
 -export([add/2, subtr/2, mult/2, divis/2]). 

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

-рдкреЛрд░реНрдЯ (рдореЙрдбреНрдпреВрд▓рдирд╛рдо, [Fnct1 / Arite, Fnct2 / Arity, ..., FnckN / Arity])ред
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдо ModuleName рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рджреВрд╕рд░реЗ рддрд░реНрдХ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпреЛрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рд╕реБрд╡рд┐рдзрд╛рдПрдБ? рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкреВрд░реНрдг рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ModuleName:FunctionName() ред рдпрджрд┐ рдЖрдк рд╣рд░ рдмрд╛рд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ C ++ рд╕реЗ #using рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдпрд╛рдд рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕реЗ рджреЗрдЦрдХрд░, рдЖрдк рддреБрд░рдВрдд рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдо рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЫреЛрдЯреЗ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 -import(io, [format/2]). 

рдареАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреБрдЫ рдордирдорд╛рдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВред рдЗрд╕реЗ рд▓реЗрдЦрдХ рдХрд╛ рдирд╛рдо рдмрддрд╛рдПрдВред
 -author("Haru Atari"). 

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдпрджрд┐ рдЕрдм рдЖрдк рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА:
 1> c(mySuperModule). ./mySuperModule.erl:2: function add/2 undefined ./mySuperModule.erl:2: function divis/2 undefined ./mySuperModule.erl:2: function mult/2 undefined ./mySuperModule.erl:2: function subtr/2 undefined 

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

рдХрд╛рд░реНрдпреЛрдВ


рдореВрд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, FnctName(Arg1, Arg2, ..., ArgN) -> FunctionBody. рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реИрдВ: FnctName(Arg1, Arg2, ..., ArgN) -> FunctionBody. рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдПрдХ рдкрд░рдорд╛рдгреБ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд╢рд░реАрд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рднрд╛рд╡ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ ред рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдмрд┐рдВрджреА рд▓рдЧрд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред
 add(X, Y) -> X + Y. 

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

рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рджреВрд░ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЛрдб рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 add(X, Y) -> doSomthing(), X + Y. 

рдЕрдм рд╢реЗрд╖ рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВред рд╣рдордиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред

рд╕рдВрдХрд▓рди


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

Erlang рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЖрдо рдмреАрдИрдПрдПрдо (рдмреЛрдЧрдбрд╛рди / рдмреНрдпреЛрд░реНрди рдХреА рдПрд░рд▓реИрдВрдЧ рд╕рд╛рд░ рдорд╢реАрди) рд╣реИред рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ (JAM рдФрд░ WAM) рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдЯрд░реНрдорд┐рдирд▓ рдпрд╛ рдПрд░реНрд▓рд╛рдВрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗред рдЖрдЗрдП рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ erlc FileName.erl рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ erlc FileName.erl ред рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдЧрд╛)ред
 cd ~/Erlang-for-the-little-ones/02/sources erlc mySuperModule.erl 

Erlang рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ cd("DirName") рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ c(ModuleName) рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╣реАрдВ, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
 1> cd("~/Erlang-for-the-little-ones/02/sources/"). /home/haru/Erlang-for-the-little-ones/02/sources ok 2> c(mySuperModule). {ok,mySuperModule} 

рд╕рдВрдХрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, mySuperModule.erl рдлрд╝рд╛рдЗрд▓ mySuperModule.erl рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдЧреЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
 1> mySuperModule:add(2, 4). 6 2> mySuperModule:divis(6,4). 1.5 

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП "рд╕рдВрдХрд▓рди рдЭрдВрдбреЗ" рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, c() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ - рдЭрдВрдбреЗ рдХреА рдПрдХ рд╕реВрдЪреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 c(mySuperModule, [debug_info]). 

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

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


рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдордиреЗ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреЗрд╢ рдХрд┐рдПред рд╣рдордиреЗ рдпрд╣ рднреА рд╕реАрдЦрд╛ рдХрд┐ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рднреА рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдЪреНрдЫреЗ рдореВрдб рдФрд░ рдЦрд░рд╛рдм рд╕рдВрдмрдВрдз рд░рдЦреЗрдВред

рдкреАрдПрд╕ рдореИрдВ рдкреАрдПрдо рдореЗрдВ рдЯрд╛рдЗрдкреЛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рдЖрдкрдХреА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles