рдЫреЛрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд░рд▓рд╛рдВрдЧред рдЕрдзреНрдпрд╛рдп 3: рдмреЗрд╕рд┐рдХ рдлрдВрдХреНрд╢рди рд╕рд┐рдВрдЯреЗрдХреНрд╕

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

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



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

рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛ рджреЗрдЧрд╛ рдФрд░ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдкрд╛рда рдЙрд╕рдХреЗ рд▓рд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рдЫрджреНрдо рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
function greet(Gender,Name) if Gender == male then print("Hello, Mr. %s!", Name) else if Gender == female then print("Hello, Mrs. %s!", Name) else print("Hello, %s!", Name) end 

рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЗ рдмрдЬрд╛рдп рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ if then else , рддреЛ рдЖрдк рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЗ рдПрдХ рдЯрди рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрд░реНрд▓реИрдВрдЧ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
 greet(male, Name) -> io:format("Hello, Mr. ~s!", [Name]); greet(female, Name) -> io:format("Hello, Mrs. ~s!", [Name]). 

io:format() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдордиреЗ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рд╕реВрдЪреА рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рде рдЗрдирдкреБрдЯ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднрд╛рдЧ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВ рдкрд╣рд▓реЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдФрд░ "рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ" рд╢реИрд▓реА рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреА рдШреЛрд╖рдгрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 fnct_name(X) -> Extpression; fnct_name(Y) -> Expression; fnct_name(_) -> Expression. 

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

рдЕрдВрддрд┐рдо рдирдореВрдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ greet() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд▓рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ рдХрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд┐рд╕реА рднреА рдирдореВрдиреЗ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ:
 1> chapter03:greet(someOther, "Haru"). ** exception error: no function clause matching chapter03:greet(someOther, "Haru") 

рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирдореВрдиреЗ рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдВрддрд┐рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдирдореВрдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рддрд╛рдХрд┐ рдпрд╣ рдЕрдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХреЗ:
 greet(male, Name) -> io:format("Hello, Mr. ~s!", [Name]); greet(female, Name) -> io:format("Hello, Mrs. ~s!", [Name]); greet(_, Name) -> io:format("Hello, ~s!", [Name]). 


рд▓реЗрдХрд┐рди рдлрдВрдХреНрд╢рди рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдореЗрдВ рдкреИрдЯрд░реНрди рдореИрдЪрд┐рдВрдЧ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ: рд╕реВрдЪреА рдореЗрдВ рд╕рд┐рд░ рдФрд░ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
 first([X|_]) -> X. second([_,X|_) -> X. 

рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЪрд╛рд▓ рд╣реИ рдХрд┐ рдПрд░рд▓рд╛рдВрдЧ рдореЗрдВ рдЪрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
 same(X,X) -> true; same(_,_) -> false. 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди true рдЕрдЧрд░ рдЗрд╕рдХреЗ рддрд░реНрдХ рд╕рдорд╛рди рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ false рд░рд┐рдЯрд░реНрдиред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп chapter03::same(one, two). X рдорд╛рди one рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рд╣реА рдЪрд░ рдореЗрдВ рдорд╛рди two рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдХреЛрдИ рдорд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдиреБрдкрдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░ рдорд╛рдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди false ред рдпрджрд┐ рдЖрдк рд╕рдорд╛рди рдорд╛рдиреЛрдВ рдХреЛ chapter03:same(3, 3). рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ chapter03:same(3, 3). , рддрдм рдкрд╣рд▓рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди true рд▓реМрдЯреЗрдЧрд╛ред

рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ


рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдЦрд╛рдореА рд╣реИ: рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рд╢реНрд░реЗрдгреА рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдкреНрд░рддреНрдпреЗрдХ рдирдореВрдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд░рд▓реИрдВрдЧ рдХреЗ рдкрд╛рд╕ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ (рдпрд╛ рд╡реЙрдЪрдбреЙрдЧ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ) рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдмреАрдПрдордЖрдИ (рдмреЙрдбреА рдорд╛рд╕ рдЗрдВрдбреЗрдХреНрд╕) рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдмреАрдПрдордЖрдИ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЙрд╕рдХреЗ рд╡рдЬрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред
 bmi_tell(Bmi) when Bmi =< 18.5 -> "You're underweight."; bmi_tell(Bmi) when Bmi =< 25 -> "You're supposedly normal."; bmi_tell(Bmi) when Bmi =< 30 -> "You're fat."; bmi_tell(_) -> "You're very fat.". 

рдпрд╣рд╛рдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рд╢рдмреНрдж рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ when ( Bmi =< 18.5 )ред рдпрджрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ true , рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рд╢рд╛рдЦрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдЕрдиреНрдпрдерд╛, рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЕрдВрдд рддрдХред рдФрд░ рдпрд╣рд╛рдБ рд╣рдордиреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╢рд░реНрдд рднреА рдЬреЛрдбрд╝реА рд╣реИ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдХреЛрдИ рднреА рдореВрд▓реНрдп рдлрд┐рдЯ рд╣реЛрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЧрд╛рд░реНрдб рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 fnct_name(Arg_1, Arg_1, ..., Arg_n) when rule_1 -> Expression; fnct_name(Arg_1, Arg_1, ..., Arg_n) when rule_2 -> Expression. 

рд╣рдо рднреА рдХрд┐рд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдХреБрдЫ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ (рдПрдирд╛рд▓реЙрдЧ andalso ) рдкреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП , рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо ( , ) рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
 lucky_number(X) when 10 < X, X > 20 -> true; lucky_number(_) -> false. 

рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ ( orelse рдЕрдиреБрд░реВрдк) orelse , рддреЛ рд╡реЗ рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо ( ; ) рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
 lucky_atom(X) when X == atom1; X == anot2 -> true; lucky_atom(_) -> false. 

рдЖрдк рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рддрд░реНрдХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд┐ Y рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ:
 safe_division(X, Y) when is_integer(X), is_integer(Y), Y /= 0 -> X / Y; safe_division(_, _) -> false. 


рдЙрдкрд╢рд╛рдЦрд╛


if


рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд░рд▓рд╛рдВрдЧ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп if ред рдЖрдЗрдП рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ bmi_tell() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ bmi_tell() ред
 if_bmi_tell(Bmi) -> if Bmi =< 18.5 -> "You're underweight."; Bmi =< 25 -> "You're supposedly normal."; Bmi =< 30 -> "You're fat."; true -> "You're very fat." end. 

рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, if рд╢рд╛рдЦрд╛ if рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 if Rule_1 -> Expression; Rule_2 -> Expression; ... true -> Expression end. 

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

рдЕрдВрддрд┐рдо рдмреНрд▓реЙрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ true -> "You're very fat. рдпрд╣ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ? рдпрд╣ orelse рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдХреЛрдб рдмреНрд▓реЙрдХ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╢рд░реНрдд рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдПрд░реНрд▓реИрдВрдЧ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рд╕рднреА рд╢рд░реНрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ true рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
 ** exception error: no true branch found when evaluating an if expression in function chapter03:if_bmi_tell/1 


case ... of


if рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд░реНрд▓реИрдВрдЧ рдХрд╛ рдПрдХ рдФрд░ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рд╣реИ - рдХрд╛ case of ред рдФрд░ рдпрд╣ рдСрдкрд░реЗрдЯрд░ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреИрдЯрд░реНрди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 case Rule of Val_1 -> Expression; Val_2 -> Expression ... Val_n -> Expression 

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рддрд╛рдкрдорд╛рди рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рдЯрдкрд▓ рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдк рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдирд╛рдо рдФрд░ рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ред
 assessment_of_temp(Temp) -> case Temp of {X, celsius} when 20 =< X, X =< 45 -> 'favorable'; {X, kelvin} when 293 =< X, X =< 318 -> 'scientifically favorable'; {X, fahrenheit} when 68 =< X, X =< 113 -> 'favorable in the US'; _ -> 'not the best tempperature' end. 

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

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

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


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

рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдПрд░реНрд▓реИрдВрдЧ рдореЗрдВ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред рдореИрдВ рдЗрддрдиреА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рдХреЛрдИ рдЦрд╛рд▓реА рд╕рдордп рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред

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

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


All Articles