OCaml рдХрд╛ рдкрд░рд┐рдЪрдп: рдЕрд╢рдХреНрдд рд╕рдВрдХреЗрдд, рдХрдерди рдФрд░ рдЪреЗрддрд╛рд╡рдиреА [4]

[рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ .: рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ [ 1 ; 2 ; 3 ]
рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрдорд╛рд░рд╛рдУ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдЕрд╢рдХреНрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рднреА рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛]

рдЕрд╢рдХреНрдд рд╕рдВрдХреЗрдд


рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдиреЗ рдПрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдкрд╛рдардХреЛрдВ рд╕реЗ рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рдЙрдореНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЗ рдХреБрдЫ рдкрд╛рдардХ рдЕрдкрдиреА рдЙрдореНрд░ рдирд╣реАрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рд╡реЗ рдЙрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЛ рднрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмреБрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

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

рдПрдХ рдФрд░, рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдореНрд░ рдХреЛ рдПрдХ рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рдореЗрдВ "рдкреВрд░реНрдгрд╛рдВрдХ рдпрд╛ рдЕрд╢рдХреНрдд" рдореВрд▓реНрдп рд╣реЛред рдпрд╣рд╛рдБ рдЙрдореНрд░ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:

 рддрд╛рд▓рд┐рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБ
 (
   рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрд░рд┐рдпрд▓,
   рдирд╛рдо рдкрд╛рда рдЕрд╢рдХреНрдд рдирд╣реАрдВ,
   рдЖрдпреБ int - рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
 );

рдпрджрд┐ рдЖрдпреБ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ SQL NULL рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдФрд╕рдд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗ рддреЛ SQL рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛ред
рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрд╢рдХреНрдд рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдкрд░реНрд▓ рдореЗрдВ, рдХреЛрдИ рднреА рд╕реНрдХреЗрд▓рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ) undef рд╣реЛ рд╕рдХрддреА рд╣реИ ("рд╢реВрдиреНрдп" рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрд▓ рд╡рд┐рдзрд┐)ред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдиреМрд╕рд┐рдЦрд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдРрд╕реА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдЕрдХреНрд╕рд░ рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдХреЛрдИ рднреА рд╕рдВрджрд░реНрдн рднреА null рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Integer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдЙрдореНрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ null рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИред рд╕реА рдореЗрдВ, рдПрдХ рд╕реВрдЪрдХ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рдкреНрд░рдореБрдЦ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдореЙрд▓реЛрдХ рджреНрд╡рд╛рд░рд╛ рдвреЗрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред

OCaml рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╕рд░рд▓ рдмрд╣реБрд░реВрдкреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╢рдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

 рдкреНрд░рдХрд╛рд░ 'рдПрдХ рд╡рд┐рдХрд▓реНрдк = рдХреЛрдИ рдирд╣реАрдВ |  рдХреБрдЫ 'рдП

рдПрдХ "рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ" рдХрд┐рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ None рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЙрдореНрд░ (рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬреЛ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИ) рдЯрд╛рдЗрдк int option [рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ int list рдФрд░ binary_tree ]ред
 # рдХреБрдЫ ;;
 - - int рд╡рд┐рдХрд▓реНрдк = рдХреБрдЫ 3

рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
 # # рдХреЛрдИ рдирд╣реАрдВ;  рдХреБрдЫ 3;  рдХреБрдЫ 6;  рдХреЛрдИ рдирд╣реАрдВ];
 - - int рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА = [рдХреЛрдИ рдирд╣реАрдВ;  рдХреБрдЫ 3;  рдХреБрдЫ 6;  рдХреЛрдИ рднреА]

рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
 # рдХреБрдЫ 1;  2;  3] ;;
 -: int рд╕реВрдЪреА рд╡рд┐рдХрд▓реНрдк = рдХреБрдЫ [1;  2;  3]

рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ, рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рд╕реНрдЯреЗрдбрд░ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ


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

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

 # рдореБрдЦрд░ (Sys.os_type = "Win32") ;;
 рдЕрдкрд╡рд╛рдж: Assert_failure ("", 0, 30)ред

(Win32 рдкрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ)

рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП assert false рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...

failwith "error message" рдПрдХ Failure рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдЬреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рддреЛ рднреЗрдЬреЗ рдЧрдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред failwith рдЕрдХреНрд╕рд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА failwith , рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:
   рдореИрдЪ Sys.os_type рдХреЗ рд╕рд╛рде
     "рдпреВрдирд┐рдХреНрд╕" |  "рд╕рд╛рдЗрдЧрд╡рд┐рди" -> (* рдХреЛрдб рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ *)
   |  "Win32" -> (* рдХреЛрдб рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ *)
   |  "MacOS" -> (* рдХреЛрдб рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ *)
   |  _ -> рд╡рд┐рдлрд▓ "рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ"

рд╣рдо рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред рддрдерд╛рдХрдерд┐рдд "рд░реЗрдВрдЬ рдирдореВрдирд╛" [рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рдж: рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдореВрд▓ "рд░реЗрдВрдЬ рдкреИрдЯрд░реНрди", рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣реА рдЕрдиреБрд╡рд╛рдж рдЬрд╛рдирддрд╛ рд╣реИ, рддреЛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд (рдПрдЪрдкреА рдореЗрдВ рдЕрдзрд┐рдорд╛рдирддрдГ) "рдпреВрдирд┐рдХреНрд╕" рдпрд╛ "рд╕рд╛рдЗрдЧреНрд╡рд┐рди", рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирдореВрдирд╛ _ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ "рдХреБрдЫ рдФрд░" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк, рдореЗрд░реА рддрд░рд╣, рдЬреАрдбреАрдмреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдбрд┐рдмрдЧрд░реНрд╕ рд╕реЗ рдШреГрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ):
open Graphics;;

open_graph " 640x480";;
for i = 12 downto 1 do
let radius = i * 20 in
prerr_endline ("radius is " ^ (string_of_int radius));
set_color (if (i mod 2) = 0 then red else yellow);
fill_circle 320 240 radius
done;;
read_line ();;

рдпрджрд┐ рдЖрдк C рд╕реЗ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
open Graphics;;
open Printf;;

open_graph " 640x480";;
for i = 12 downto 1 do
let radius = i * 20 in
eprintf "radius is %d\n" radius;
set_color (if (i mod 2) = 0 then red else yellow);
fill_circle 320 240 radius
done;;
read_line ();;


[рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред рдореВрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ ocaml-tutorial.org рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реАрдзреЗ рдпрд╛ рд╕реАрдзреЗ рдирд╣реАрдВ рдЦреБрд▓рддрд╛ рд╣реИ; Google рдХреИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ; рдЖрд░реНрдХрд╛рдЗрд╡ рдбреЙрдЯ рдУрдЖрд░рдЬреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ; рддреЛрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ] рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рджрд░реНрдкрдг рд╕реЗ рд▓рд┐рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛]

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


All Articles