рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЛрдирд╛рдб

рдкрд░рд┐рдЪрдп

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

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

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорда рд▓рдЧрднрдЧ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИрдВред

рд╕рд╛рдордЧреНрд░реА

  1. рд╢реНрд░реЗрдгреА
  2. functor
  3. рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди
  4. рдЗрдХрд╛рдИ
  5. рдЕрдкрд╡рд╛рдж рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдорда
  6. рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдореЛрдирд╛рдбреНрд╕
  7. рд╕рдВрджрд░реНрдн

рд╢реНрд░реЗрдгреА

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

рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡рд╕реНрддреБ рдпрд╛ рддреАрд░ рдХреНрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ:

рдПрдХ рддреАрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╕реНрддреБ рдПрдХ рдФрд░ рдПрдХ рд╣реА рд╣реЛ рд╕рдХрддреА рд╣реИ); рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: f: a тЖТ b , рдЬрд╣рд╛рдВ f рдПрдХ рддреАрд░ рд╣реИ, рдФрд░ a рдФрд░ b рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред
  1. рддреАрд░ f рдХреЗ рд▓рд┐рдП: a тЖТ b рдФрд░ g: b тЖТ c, рдРрд╕реЗ рддреАрд░ h рдореМрдЬреВрдж рд╣реИ : a тЖТ c рдЬрд┐рд╕реЗ рд░рдЪрдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: h = g ┬░ f ред
  2. рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдП рдХреЗ рд▓рд┐рдП, рдПрдХ рдпреВрдирд┐рдЯ рдПрд░реЛ рд╣реИ , рдЖрдИрдбреА a : a тЖТ a , рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рднреА f рдХреЗ рд▓рд┐рдП: a тЖТ b рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рддреНрдп рд╣реИ:
    f ┬░ id a = f рдФрд░ рдХрд┐рд╕реА рднреА g: c тЖТ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ id a ┬░ g = g рд╣реИ ред
  3. рд░рдЪрдирд╛ рд╕рд╣рдпреЛрдЧреА рд╣реИ: f ┬░ (g ┬░ h) = (f ┬░ g) ┬░ h ред
рд░рд┐рдорд╛рд░реНрдХ ред рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдЕрддреНрдпрдВрдд рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕" рдпрд╛ "рдП рд╕реЗ рдмреА рддрдХ рд╕рднреА рддреАрд░" рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдЬрд┐рди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡реЗ рд╕реЗрдЯ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ "рдЫреЛрдЯрд╛" рдпрд╛ "рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

"рдХреНрд▓рд╛рд╕рд┐рдХ" рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
  1. рд╕реЗрдЯ рд╕рднреА рд╕реЗрдЯреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╣реИред рдЗрд╕рдХреА рд╡рд╕реНрддреБрдПрдВ рд╕рднреА рд╕реЗрдЯ рд╣реИрдВ, рдФрд░ рдЖрдХрд╛рд░рд┐рдХреА рд╕реЗрдЯ рдкрд░ рдХрд╛рд░реНрдп рд╣реИрдВред
  2. рд╕реЗрдЯрдл рдЙрдирдХреЗ рдмреАрдЪ рд╕рднреА рдкрд░рд┐рдорд┐рдд рд╕реЗрдЯреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╣реИред
  3. Rel рдПрдХ рдРрд╕реА рд╢реНрд░реЗрдгреА рд╣реИ рдЬрд╣рд╛рдБ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рднреА рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдЗрдирд░реА рд╕рдВрдмрдВрдз рдореЛрд░реНрдлрд┐рдЬрд╝реНрдо рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдШ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рднрд╛рдЧ рд╕рднреА рд╕реЗрдЯреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╣реИ рдФрд░ рдЖрдХреГрддрд┐ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред X рд╕реЗ Y рддрдХ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп, X o Y X рд╕реЗ Y рдХреЗ рд╕рдмрд╕реЗрдЯ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:

  5. рдЯреЙрдк рд╕рднреА рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реНрдкреЗрд╕ рдХреА рд╢реНрд░реЗрдгреА рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдирд┐рд░рдВрддрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдРрд╕реА рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рднреА рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдирд╣реАрдВ рд╣реИрдВ:
  1. рдХрд┐рд╕реА рднреА рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХ рд╡рд╕реНрддреБ рдкрд░ рдЖрдХрд╛рд░рд┐рдХреА рд╣реИред
    рдкрд╣рдЪрд╛рди рд╕рдорд╛рд░реЛрд╣ рд╕рдореВрд╣ рдХрд╛ рддрдЯрд╕реНрде рддрддреНрд╡ рд╣реИред рдФрд░ рд░рдЪрдирд╛ рдХрдИ рдЧреБрдирд╛ рд╣реИред
  2. рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реЗрдЯ рдХреЗ рддрддреНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА a, b рдХреЗ рд▓рд┐рдП рдПрдХ рддреАрд░ a тЖТ b рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдПрдХ <b рдФрд░ рдПрдХ рдЗрдХрд╛рдИ a тЖТ рдкреНрд░рддреНрдпреЗрдХ a рдХреЗ рд▓рд┐рдП a ред
    рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддреАрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░, рдЪреВрдВрдХрд┐ рдЖрдВрд╢рд┐рдХ рдХреНрд░рдо рд╕рдХрд░реНрдордХ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рдЪрдирд╛ ( рдПрдХ <b, b <c => a <c ) рд╣реИ, рдпрд╛рдиреА рдЖрдк рдЗрд╕рдХреА рд╕рдорд╛рд▓реЛрдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
  3. рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдкреВрд░реНрдгрд╛рдВрдХ [N ... M] рдХреЗ рд╕реЗрдЯ рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  4. рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧреНрд░рд╛рдл рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рддрдмреНрджреАрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рддреАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВред рдЦрд╛рд▓реА рдкрде рдПрдХ рдПрдХрд▓ рдЖрдХрд╛рд░рд┐рдХреА рд╣реИ, рдФрд░ рдкрде рдХрд╛ рд╕рдВрдШрдЯрди рдПрдХ рд░рдЪрдирд╛ рд╣реЛрдЧреАред
  5. рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рддреАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛрддреА рд╣реИрдВред рдХреЛрдИ рднреА рдореИрдЯреНрд░рд┐рдХреНрд╕ NxM рдПрдХ рддреАрд░ N тЖТ M рд╣реЛрдЧрд╛ред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рд░рдЪрдирд╛ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдЧрд╛, рдФрд░ рдкрд╣рдЪрд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕ NxN рдкрд╣рдЪрд╛рди рддреАрд░ N тЖТ N рд╣реЛрдЧрд╛ред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА

рдмрд╕ рдПрдХ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдЬреНрдо рдХреЛ рдПрдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - рдпрд╣ рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЙрд▓рдЯрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ f: a тЖТ b рдФрд░ g: b тЖТ a , рдФрд░ f ┬░ g = id b рдФрд░ g ┬░ f = id a рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореЛрдиреЛрдореЛрд░реНрдлрд┐рдЬреНрдо рдФрд░ рдПрдкрд┐рдореЛрд░реНрдлрд┐рдЬреНрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рд╕реЗ рд╡рд╕реНрддреБрдУрдВ [0 ... N] рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ? рд╡рд┐рд╢реЗрд╖ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╣реИрдВ: 1 = [0] рдФрд░ 2 = [0 ... 1] ред рдкрд╣рд▓рд╛ рдПрдХ рдПрдХрд▓ рдЖрдХреГрддрд┐рд╡рд╛рдж рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рджреВрд╕рд░рд╛ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рддреАрди рдЖрдХрд╛рд░ рдХрд╛ рд╣реИред

рдХреНрдпрд╛ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдЦреБрдж рдПрдХ рд╢реНрд░реЗрдгреА рдмрдирд╛рддреА рд╣реИрдВ? рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рддреАрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рджреВрд╕рд░реЗ рдХреНрд░рдо рдХреЗ рддреАрд░ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрдВрдХреНрд╢рдирд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

functor

рдлрд╝рдирдХрд╛рд░ рдПрдХ рд╢реНрд░реЗрдгреА рдХреЛ рджреВрд╕рд░реА рд╢реНрд░реЗрдгреА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╣рд▓реА рд╢реНрд░реЗрдгреА рд╕реЗ рджреВрд╕рд░реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдФрд░ рддреАрд░ (рдЖрдХрд╛рд░рд┐рдХреА) рдХреЛ рдкрд╣рд▓реА рд╢реНрд░реЗрдгреА рд╕реЗ рджреВрд╕рд░реЗ рд╢реНрд░реЗрдгреА рдХреЗ рддреАрд░ рдкрд░ рд╕реБрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдо рдХрд┐рд╕ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ? X рдФрд░ Y рджреЛ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╣реИрдВ; рдПрдХ рдлрдВрдХреНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ F: X тЖТ Yред рдЕрдм рд╣рдореЗрдВ X рд╕реЗ Y рддрдХ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, X рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ F (a) рдХреЗ рд▓рд┐рдП Y рдФрд░ X рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддреАрд░ рдХреЗ рд▓рд┐рдП Y рдореЗрдВ рддреАрд░ F (f) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

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

рдлрдирдХрд╛рд░ рдЙрджрд╛рд╣рд░рдг

  1. рд╢реНрд░реЗрдгреА X рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рди рдлрд╝рдирдХрд╛рд░ред рдпрджреНрдпрдкрд┐ рдкрд╣рдЪрд╛рди X тЖТ X рд╡рд╕реНрддреБрдУрдВ рдФрд░ рддреАрд░реЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рдлрд╝рдирдХрд╛рд░ рд╣реИред
  2. рд╕реЗрдЯрдл рд╕реЗрдЯ рдПрдХ рдРрд╕рд╛ рдлрдиреНрдиреЗрдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗрдЯрдл рдХреЛ рд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкрд░рд┐рдорд┐рдд рд╕реЗрдЯреЛрдВ рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рднреАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╛рди рдлрд╝рдирдХрд╛рд░ рдирд╣реАрдВ рд╣реИред
  3. рд╕реЗрдЯ рдХрд░реЗрдВ тЖТ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╢реАрд░реНрд╖ , рдпрд╣ рдлрд╝рдирдХрд╛рд░ рд╕реЗрдЯ рдХреЛ рд╢реАрд░реНрд╖ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рдХреЛ рдЕрд╕рддрдд рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдХрд┐рд╕реА рднреА рд╕реЗрдЯ A рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдирдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
    (- xA): рд╕реЗрдЯ тЖТ рд╕реЗрдЯ - рдпрд╣ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ X рдХреЛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж X ├Ч A рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ ред
  5. рдХрд┐рд╕реА рднреА рд╕реЗрдЯ A рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдлрд╝рдирдХрд╛рд░ P A : рд╕реЗрдЯ тЖТ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ X рдХреЛ X A рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ - A рд╕реЗ X рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реЗрдЯред
  6. рд╕реЗрдЯ рднрд╛рдЧ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ - рдЙрдирдореЗрдВ рд╕реЗрдЯ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
  7. рдЖрдЗрдЯрдо 6 рдХрд╛ рдХрдирдХреНрд▓реВрдЬрди рдлрдиреНрдХреНрдЯрд░ + рдиреВрд▓ : рдкрд╛рд░реНрдЯ тЖТ рд╕реЗрдЯ рд╣реИ - рдпрд╣ рдлрдирдХрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реИрдЯ X each (X + Null) рдореЗрдВ рдПрдХ " Null рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдЬреЛрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдВрд╢рд┐рдХ рдлрдВрдХреНрд╢рди X тЖТ Y рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдореИрдкреНрд╕ (X + Null) тЖТ (Y + рдирд▓) ред
рд╡реНрдпрд╛рдпрд╛рдо рдХрд░реЗрдВ ред рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред

рдЖрдЗрдП рдЫреЛрдЯреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
  1. рдпрджрд┐ рд╣рдо рд╕рдореВрд╣реЛрдВ рдХреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрдХрд▓рд╛рдк рдХреНрдпрд╛ рд╣реЛрдВрдЧреЗ? рдлрд╝рдирдХрд╛рд░ рдХреЛ рдПрдХ рдПрдХрд▓ рд░реВрдкрд╡рд╛рдж рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдлрд╝рдирдХрд╛рд░ рдПрдХ рд╕рдореВрд╣ рд╕рдорд░реВрдкрддрд╛ рд╣реИред
  2. рдХреЛрдИ рднреА рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рджреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рд╕реЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдСрд░реНрдбрд░ (рддрдерд╛рдХрдерд┐рдд рдореЛрдиреЛрдЯреЛрди) рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдлрд╝рдирдХрд╛рд░ рд╣реИред
  3. рдЙрдиреНрдореБрдЦ рд░реЗрдЦрд╛рдВрдХрди рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдХреНрд╢реЗ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд▓реЗрдВред рд╣рдо рдЗрд╕ рдореИрдкрд┐рдВрдЧ рдХреЛ рдПрдХ рдРрд╕реЗ рдлрдВрдХреНрд╢рди рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдЧреНрд░рд╛рдл рд╕реЗ рджреВрд╕рд░реЗ рдЧреНрд░рд╛рдл рдкрд░ рдПрдХ рдкрде рдкрд░ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд▓рд┐рдВрдХ рдФрд░ рдЦрд╛рд▓реА рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╢реНрд░реЗрдгреА рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдПрдХ рдлрд╝рдирдХрд╛рд░ рд╣реИред
  4. рд╢реНрд░реЗрдгреА 1 рдпрд╛рдж рд╣реИ? рдФрд░ рдЗрд╕рд▓рд┐рдП, 1 рд╕реЗ рд╢реНрд░реЗрдгреА рд╕реА рддрдХ рдХрд╛ рдлрдирдХрд╛рд░ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛? 1 рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╕реНрддреБ рдФрд░ рдПрдХ рд╕рдорд╛рди рд░реВрдкрд╡рд╛рдж рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдлрдиреНрдиреЗрдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реА рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ - рд╢реНрд░реЗрдгреА рд╕реА рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдлрдирдХрд╛рд░ рдкреНрд╡рд╛рдЗрдВрдЯ рдПрдХреНрд╕ : 1 тЖТ рд╕реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди

рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдлрд╝рдВрдХреНрд╢рдирд▓рд░реНрд╕ рд╣реИрдВ рдПрдл, рдЬреА: рдПрдХреНрд╕ тЖТ рд╡рд╛рдИред рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди each: F тЖТ G рддрдм рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ x тИИ X рдХреЗ рд▓рд┐рдП рдПрдХ рддреАрд░ рд╣реЛрддрд╛ рд╣реИ ╬╖ (x): F (x) тЖТ G (x) Y рдореЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:

рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ "рдкреНрд░рд╛рдХреГрддрд┐рдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рддреАрд░реЛрдВ рдкрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг

  1. рдмрд┐рдВрджреБ рдлрдирдХрд╛рд░ рдпрд╛рдж рд╣реИ? рдФрд░ рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╢реНрд░реЗрдгреА C рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рддреАрд░ f: a тЖТ b рд╣реИ , рддреЛ рдпрд╣ рддреАрд░ рдмрд┐рдВрджреБ a рд╕реЗ рдмрд┐рдВрджреБ b рддрдХ рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд┐рдВрджреБ рдлрд╝рдирдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рд╢реНрд░реЗрдгреА рддреАрд░ рдХреЗ рдмреАрдЪ рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рд╣реИред
  2. рджреЛ рд╕реЗрдЯ A рдФрд░ B рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди f: A тЖТ B рд▓реЗрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ (- xA), (- xB): рд╕реЗрдЯ тЖТ рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред (- xf): (- xA) тЖТ (- xB) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░: (x, a) f (x, f (a)) ред

    рдЖрдк рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдирд┐рдореНрди рд░реВрдк рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
    (define (cartesian f)
        (lambda (x a) (list x (f a))))
    
    A A тЖТ (.), (.) , (- xA) тЖТ 1, X : X тип A тЖТ X.
A Set 1 тЖТ PA. X Set; X XA. , x X A X, x.

, :
(define (return x) (lambda (a) (x)))

C T: C тЖТ C : ╬╖: 1 тЖТ T ╬╝: T ┬░ T тЖТ T. T(╬╖): T тЖТ T ┬░ T , T ╬╖ T(╬╝): (T ┬░ T) ┬░ T тЖТ T ┬░ T.
:
  1. T(╬╖) ┬░ ╬╝ T тЖТ T

  2. T(╬╝) ┬░ ╬╝ ╬╝ ┬░ ╬╝:

  1. C , .
  2. , G. MG Set. :
    X тЖж X ├Ч G.
    u(X): X тЖТ X ├Ч G x (x, e), e .
    MG(MG(X)) = (idX, mG), mG .
  3. Set. , List, X (x1, x2, x3...) X, . , u m. uX: X тЖТ List(X) x тИК X mX: List(List(X)) тЖТ List(X) .

. , ┬лcomputer science┬╗.

, - , , ?

( ) C: X тЖТ X , тИА x тИК X x <= C(x) C(C(x)) = C(x).

, , - , , - . - .


Part. A :
PlusNull: X тЖж (X+Null)

, Part Set. Set Part, .

? uX: X тЖТ (X+Null) mX: ((X+Null)+Null) тЖТ (X+Null).

, Null Null. Lisp :
(define (ux x) x)

(define (mx x) x)
, ( , , , ).

Set. A :

X тЖж (X ├Ч A)A

A , , (X ├Ч A)A X X, A тЖТ (A ├Ч X), , X.

? uX: X тЖТ (A ├Ч X)A x тИК X , A x X.

Lisp:
(define (ux x)
    (lambda (a) (list a x)))

mX: (A ├Ч (A ├Ч X)A)A тЖТ (A ├Ч X)A?

mX: (A ├Ч (A ├Ч X)A)A, A , ( A , X ). , , A?

Lisp:
(define (mx f)
    (let (tr1 out1)
        ((car f) (cadr f))) ;  f: A тЖТ (A ├Ч (A ├Ч X))^A
    (lambda (a)
        (let a1 (tr1 a))    ;   
        (let f2 (out1 a))   ;    
        (let (tr2 out2) ((car f2) (cadr f2))) ;   
            (list (tr2 a1) (out2 a1))))
: A A ├Ч (A ├Ч X)A, A тЖТ A A тЖТ (A ├Ч X)A, a a1 , A A ├Ч X .
. , .

, f: X тЖТ Y, X ┬л┬╗, Y ┬л┬╗.
, ; , 100% , . , ┬л ┬╗ .

, , .

NullObject NaN.
, X, (Y+Null), .

, , .

IO Haskell

Haskell IO, , .

. , . , A , , X .

. A String, ┬л┬╗, ┬л┬╗.
, , getc, , , putc, .

, .

  1. .
  2. , , .
  3. тАЬComprehending MonadsтАЭ Frederik Eaton тАФ .
  4. Haskell u return, m join
  5. Haskell List .
  6. map/reduce Google.

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


All Articles