Fable: Fable 2 . рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2018  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fable-compiler/Fable

рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рдпрд╣рд╛рдВ рд╢реБрд░реВ рд╣реБрдЖ https://github.com/SaturnFramework/Saturn/issues/33

рдЗрд╕ рдЯреНрд╡рд┐рдЯрд░ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рдмрдирд╛рдо рд╕реНрдкрд╖реНрдЯ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рднреА рд╣реИрдВред

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

  • Fable 2 alpha рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдорд░реНрдерди рдХреЗ рд╢рд┐рдк ofJson/toJson рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА Fable рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрд┐рдВрдм рдирд╣реАрдВ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред

  • рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдЫреЛрдбрд╝реЗрдВ? рдЦреИрд░, рдЕрдВрдд рдореЗрдВ рдореИрдВ рдХреЛрдб рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ (рдЙрдореНрдореАрдж рд╣реИ) рдЗрд╕реЗ рдХреНрд▓реАрдирд░, рдЕрдзрд┐рдХ рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп рдФрд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ Fable рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЙрдбрд▓ рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрддреНрдкрдиреНрди JS рдХреЛрдб (рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ Fable 2 рдХреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ) рдФрд░ Fable рдХреЛрдб рдмреЗрд╕ рджреЛрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд░реВрд░рддреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП Fable 2 alpha рдХреЗ рд╕рд╛рде рдирдП рд╕рд┐рд░реЗ рд╕реЗ _рд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдирд╣реАрдВ, рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

  • рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЕрднреА рдХреНрд░рдорд╛рдВрдХрди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдореЛрдЯрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрдм рд▓реЛрдЧ рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдлреИрдмрд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рд╣реЛ рдЪреБрдХрд╛ рд╣реИ)ред Fable 2 рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ:

    • рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдкреЗрдбрд╝ рдХреЗ рд╣рд┐рд▓рдиреЗ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
    • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП typeof<Foo> рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЬрд╛рдирдХрд╛рд░реА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдРрдкреНрд╕ рдХреЛ рджрдВрдбрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд╣реЛрдЧрд╛ред

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

  • Fable 2 рдореЗрдВ рдСрдЯреЛ-рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд░рд┐рдХреЙрд░реНрдб рд╕рд╛рджреЗ JS рдСрдмреНрдЬреЗрдХреНрдЯ рдмрди рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдпреВрдирд┐рдпрди, JS рд╕рд░рдгрд┐рдпрд╛рдБред рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рджреЗрд╢реА JSON.parse/stringify рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕рдорд╕реНрдпрд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреА рд╣реЛрдЧреА рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ JSON рдПрдкреАрдЖрдИ, рдЬреИрд╕реЗ рдореИрдкреНрд╕, рд╕реЗрдЯ, рддрд┐рдерд┐рдпрд╛рдВ, рд▓рдВрдмреЗ, рдЖрджрд┐ ... рдЙрдиреНрд╣реЗрдВ рдлреБрд▓рд╛рдПрдВ / рдбрд┐рдлреНрд▓реЗрдЯ рдХрд░реЗрдВред

  • рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ? рдХреБрдЫ рдмрд╛рддреЗрдВ рд╣реИрдВ

    • рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рд╣рдо рдПрдХ _safe_ рднрд╛рд╖рд╛ рдмреЗрдЪ рд░рд╣реЗ рд╣реИрдВред
    • рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ _mirror_ Newtonsoft.Json рдлреНрд░рдВрдЯрдПрдВрдб-рд╕рд╛рдЗрдб рдкрд░ рд╣реИ, рдФрд░ рдХреБрдЫ рд▓реЛрдЧ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдЬреЗрд╕рди рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред

      • рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ (рдПрдл # рд╢рд╛рдорд┐рд▓) рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдПрдореНрдмреЗрдбреЗрдб рдирд╣реАрдВ рд╣реИред рдпрд╣ Fable рдХреЛрдб рдмреЗрд╕ рдХреА рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрдд рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ Fable 2 рдХреЗ рд╕рд╛рде рд╣реБрдЖ)ред рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЛ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред

  • рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреЗ рдореБрджреНрджреЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ, рдЗрд╕ рд╕рдордп рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдк рдЬрд┐рд╕реЗ Fable 2 alpha рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ Thot.Json ред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдкрдХреЛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП JSON рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдмреЗрд╣рддрд░ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрдореА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдбрд┐рдХреЛрдбрд░реНрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Fable рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХрд╛ JSON рд╕рдорд░реНрдерди рд╣реИред рд╕рднреА рдЬрдЧрд╣ рдПрдирдХреЛрдбрд░/рдбрд┐рдХреЛрдбрд░ рдлрдВрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдХрдард┐рди рдмрд┐рдХреНрд░реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╛рдж рд╣реИ, рдПрдл # рдкреНрд░рдХрд╛рд░ рдЬрд╣рд╛рдВ рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЖрдк рдХреЗрд╡рд▓ JSON.parse/stringify рдФрд░ рдЙрд╕ рд╕реАрдорд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдлрд╝реЗрдмрд▓ рдмреЗрд╣рддрд░ рд╣реБрдЖ рдореИрдВрдиреЗ рдЕрдкрдиреЗ JSON рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдбреЗрдЯрдЯрд╛рдЗрдореНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡реЗ рдЧрдП рддреЛ рдпрд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд╛ рдПрдХ рд╕рд╛ рд╣реЛрдЧрд╛: рдПрд╕

рдпрджрд┐ Thot.Json рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЪреЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (net46x рдореЗрдВ - рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдПрдХ рджрд┐рди рдореБрдЭреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛), рд╢рд╛рдпрдж рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реА рдмрд┐рд▓реНрдб рдЗрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдирдХрд▓реА рдХрд╣рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВ FSharp.Data.SqlClient рдХреЗ рд▓рд┐рдП рдПрдХ sql рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рддреЛ рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╛ рдПрдордПрд╕ рдмрд┐рд▓реНрдб рдХрд╛рд░реНрдп/рд▓рдХреНрд╖реНрдп рдЕрднреА рднреА рдПрдХ рдЪреАрдЬ рд╣реИрдВ ... рдХреИрд╕реЗ рдкреИрдХреЗрдЯ рдЗрд╕реЗ рдСрдЯреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ?

_рдореИрдВ рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЧрдпрд╛редJson рд╕рд╛рд▓ рдкрд╣рд▓реЗред_

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Fable рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХрд╛ JSON рд╕рдорд░реНрдерди рд╣реИред рд╕рднреА рдЬрдЧрд╣ рдПрдирдХреЛрдбрд░/рдбрд┐рдХреЛрдбрд░ рдлрдВрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдХрдард┐рди рдмрд┐рдХреНрд░реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╛рдж рд╣реИ, рдПрдл # рдкреНрд░рдХрд╛рд░ рдЬрд╣рд╛рдВ рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЖрдк рдХреЗрд╡рд▓ JSON.parse/stringify рдФрд░ рдЙрд╕ рд╕реАрдорд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдлрд╝реЗрдмрд▓ рдмреЗрд╣рддрд░ рд╣реБрдЖ рдореИрдВрдиреЗ рдЕрдкрдиреЗ JSON рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдбреЗрдЯрдЯрд╛рдЗрдореНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡реЗ рдЧрдП рддреЛ рдпрд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд╛ рдПрдХ рд╕рд╛ рд╣реЛрдЧрд╛: рдПрд╕

рдпрджрд┐ Thot.Json рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЪреЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (net46x рдореЗрдВ - рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдПрдХ рджрд┐рди рдореБрдЭреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛), рд╢рд╛рдпрдж рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реА рдмрд┐рд▓реНрдб рдЗрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдирдХрд▓реА рдХрд╣рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВ FSharp.Data.SqlClient рдХреЗ рд▓рд┐рдП рдПрдХ sql рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рддреЛ рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╛ рдПрдордПрд╕ рдмрд┐рд▓реНрдб рдХрд╛рд░реНрдп/рд▓рдХреНрд╖реНрдп рдЕрднреА рднреА рдПрдХ рдЪреАрдЬ рд╣реИрдВ ... рдХреИрд╕реЗ рдкреИрдХреЗрдЯ рдЗрд╕реЗ рдСрдЯреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ?

_рдореИрдВ рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЧрдпрд╛редJson рд╕рд╛рд▓ рдкрд╣рд▓реЗред_

рдмрд╕ рдПрдХ рдХрд╛рдЙрдВрдЯрд░-рдкреЙрдЗрдВрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ DU рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ deserializing рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкрд╛рджрди Fable 1 рдиреЛрдб рдРрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

https://github.com/intel-hpdd/device-scanner/blob/16233ff62ad710aa02d6c8fe8acdbcad0c3e1e3e/IML.DeviceScannerDaemon/src/Main.fs#L13 -L20

рдФрд░ рдиреЛрдб рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрд╡рдд: рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдореИрдВ рдПрдХ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рд▓рд┐рдЦ рд╕рдХреВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдкрдЪреЗрдХ/рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:

https://github.com/intel-hpdd/fable-import-node-powerpack/blob/4004f9c430517c1f26bf47f9c2f766598e500b0d/fable/Stream.fs#L99 -L120

https://github.com/intel-hpdd/device-scanner/blob/16233ff62ad710aa02d6c8fe8acdbcad0c3e1e3e/IML.DeviceScannerDaemon/src/Main.fs#L23 -L42

рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдореЙрди рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ: https://github.com/intel-hpdd/device-scanner/tree/master/IML.DeviceScannerDaemon (рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдПрдХ рд░рд┐рдХреЙрд░реНрдб / рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░рдЦрддреЗ рд╣реБрдП) рдПрдХ рд╕рд░рдгреА рдЖрджрд░реНрд╢ рд╣реИ) рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд┐рд░реНрдл рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореИрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

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

@davidtme рдореИрдВ рдирд┐рд░реНрдорд╛рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдпрд╛ рдЯреАрдкреА рд╕рдорд░реНрдерди рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Thot.Json рдбрд┐рдХреЛрдбрд░реНрд╕/рдПрдирдХреЛрдбрд░ рдкреАрдврд╝реА рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рддрд▓рд╛рд╢ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреА рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Thot.Json рдкрд░ рдПрдХ рдЕрдВрдХ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл Thot.Json.Net рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

// By adding this condition, you can share you code between your client and server 
#if FABLE_COMPILER
open Thot.Json
#else
open Thot.Json.Net
#endif

рдкреНрд░рд▓реЗрдЦрди

@alfonsogarciacaro рдХреНрдпрд╛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ serialization рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдХрд▓рди рдкреНрд░рдХрд╛рд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╣рд╛рдВред рдпрджреНрдпрдкрд┐ рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ _both_ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗ рдмрд╛рд╣рд░ рдХреНрд░рдорд╛рдВрдХрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЬреЛ рдХрд┐ Fable 2 alpha:wink:) рдореЗрдВ рднреА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди "рдХреНрд░рдордмрджреНрдзрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдЯреАрдмреАрдПрдЪ, рдореБрдЭреЗ рдХрд▓реНрдкрд┐рдд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкреАрд▓ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Fable рдХрд╛ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп рд╣реИ рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди IMO, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдХрдиреЗ рд╡рд╛рд▓рд╛ рдмрд┐рдВрджреБ Fable рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХрд▓рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, F # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, JS рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рднрдпрд╛рдирдХ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдоред рдЕрдЪреНрдЫрд╛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╕ рдпрд╣реА рд╣реИ: рдЕрдЪреНрдЫрд╛ рд╣реИред (рдХреИрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ?)

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

рдлрд┐рд░ рд╣рдо рдЕрд╕рдлрд▓ рдЕрд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд░рдорд╛рдВрдХрди/deserialization рд╡рд┐рдлрд▓рддрд╛ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдЖрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред

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

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ Newtonsoft.Json рдХреА рд╕рдорд╛рди рдЖрд╕рд╛рдиреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реИрдВред рдпрджрд┐ рд▓реЛрдЧ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдЕрдиреБрдХреВрд▓рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ Thot.Json рдпрд╛ Fable.SimpleJson рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ (рдПрдл # рд╢рд╛рдорд┐рд▓) рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдПрдореНрдмреЗрдбреЗрдб рдирд╣реАрдВ рд╣реИред рдпрд╣ Fable рдХреЛрдб рдмреЗрд╕ рдХреА рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрдд рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ Fable 2 рдХреЗ рд╕рд╛рде рд╣реБрдЖ)ред рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЛ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд░рдЦрд░рдЦрд╛рд╡ рд▓рд╛рдЧрдд ofJson<'a> рдФрд░ 'toJson' рдХреЗ рд╕рд╛рде рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдРрд╕реЗ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

@ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬ рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрддреНрдкрдиреНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реИред

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЙрд╕ рджреЗрд╢ рдореЗрдВ рдЬрд╣рд╛рдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдЕрднреА рднреА рдзреАрдорд╛ рд╣реИ :)

@alfonsogarciacaro рдореИрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдкреНрд╕, рд╕реЗрдЯреНрд╕ рдЗрддреНрдпрд╛рджрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЙрд▓ рдХреЛ рдлрд╝реЗрдмрд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

@alfonsogarciacaro рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ "рдЯрд╛рдЗрдк рдореЙрдбреНрдпреВрд▓" рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдРрдк рдХреА рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдпрджрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реЗрдмрдкреИрдХ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдирд╣реАрдВ?

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди ofJson/toJson рд╕рд╣рд╛рдпрдХ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рддрдм рддрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рдЬреЛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд▓рдЧрднрдЧ рдЖрд╕рд╛рди рд╣реЛред рдирдореВрдиреЗ @jgrund рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдореЗрдВ Fable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗрд╡рд▓ ofJson рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк typeof<'T> рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдЖрдкрдХреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рдж @ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдХреНрд╕рд┐рдо рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдпрд╣ _less_ рдкрдардиреАрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди Fable 2 рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ JS рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдлрд┐рдЯ рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рднреА рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдмрд╛рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреБрд▓рдорд╛ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рдФрд░ рдЬрдЯрд┐рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдпрджрд┐ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрдард┐рди рд╣реИ)ред Fable F# рднрд╛рд╖рд╛ рдХреЛ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ _most_ рдФрд░ BCL рдХреЗ FSharp.Core рдФрд░ _some_ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдХ F# рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдпрд╛ BCL/.NET рд░рдирдЯрд╛рдЗрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╖рдп рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдХреБрдЫ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреА рд▓рд╛рдЧрдд/рд▓рд╛рднреЛрдВ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрдмрд▓ 2 рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

@MangelMaxime рд╣рд╛рдВ, рдпрд╣ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдКрдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдШрдбрд╝реА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдВрджреЗрд╣ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Types рдореЙрдбреНрдпреВрд▓ рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдФрд░ рдХреГрдкрдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдХрдо рд╕реЗ рдХрдо рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди Fable рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреЛрдЯ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдПрдХ Fable 2 рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ: +1:

Fable over Elm рдЪреБрдирдиреЗ рдХрд╛ рдореЗрд░рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдкрд░ F# рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕реНрддрд░реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдерд╛ред рдореБрдЭреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ @davidtme рдиреЗ рдХрд╣рд╛, рдкрд╣рд▓реЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди "рдмрд╕ рдХрд╛рдо рдХрд┐рдпрд╛"ред рдореИрдВ JSON рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рд╣реЛрдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреНрд░рдорд╛рдВрдХрди рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╣реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред

рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордЭреМрддрд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ;)

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк typeof<'T> рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред https://github.com/intel-hpdd/fable-import-node-powerpack/blob/4004f9c430517c1f26bf47f9c2f766598e500b0d/fable/Stream.fs#L144

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

рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣рд╛рд░реНрдбрдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдзрд╛рд░рд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдЬреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ: https://github.com/intel-hpdd/fable-import-node-powerpack/blob/4004f9c430517c1f26bf47f9c2f766598e500b0d/test/ Stream.Test.fs#L221 -L232

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЪрддреБрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЙрдкрдпреЛрдЧ:
https://github.com/Zaid-Ajaj/Fable.Remoting/blob/master/Fable.Remoting.Client/Proxy.fs#L70

рдФрд░ рдпрд╣рд╛рдБ:
https://github.com/Zaid-Ajaj/Fable.Remoting/blob/master/Fable.Remoting.Client/Proxy.fs#L169

рд╕рдВрдкреВрд░реНрдг Fable.Remoting рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

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

[<Struct>]
[<StructLayout(LayoutKind.Sequential, Pack=1)>]
type Vector3 =
    val X: int32
    val Y: int32
    val Z: int32
    new(x,y,z) = {
      X=x;
      Y=y;
      Z=z;
    }
    new(dataview: DataView,offset) = {
    //TODO
    }

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА @zpodlovics рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рдХреНрдпрд╛ рдЖрдк JSON рдпрд╛ рдмрд╛рдЗрдирд░реА рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? (рдореИрдВрдиреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Google рдлреНрд▓реИрдЯрдмрдлрд╝рд░реНрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдЗрдирд░реА рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдЦреЗрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВред) рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд░рдордмрджреНрдз рдбреЗрдЯрд╛ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛? .NET рдФрд░ JS рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Fable рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ JS рдХреЛрдб рдФрд░ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдореЗрдВ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди (рд╕рдВрд░рдЪрдирд╛) рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ред

рд╕рд╛рде рд╣реА, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ, рдореИрдВ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрд░ рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред Fable 2 рдореЗрдВ рд╣рдо рд╢рд╛рдпрдж рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ JSON рдХреНрд░рдорд╛рдВрдХрди рд░рдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдзрд┐рдорд╛рдирддрдГ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@alfonsogarciacaro рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЦреИрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХреНрд░рдордмрджреНрдз рдкреНрд░рд╛рд░реВрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдореВрд▓ рд╕реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред "рдХреНрд░рдордмрджреНрдз" рдкреНрд░рд╛рд░реВрдк рдмрд┐рд▓реНрдХреБрд▓ рдПрд╕реА рд╕рдВрд░рдЪрдирд╛ (рдореВрд▓) [1] рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рджреЗрд╢реА рдЗрдВрдЯрд░рдСрдк рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рди рдореЗрдореЛрд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг 3 * 4 = 12 рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдмреИрдХрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ (.рд░реИрдк) рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ "рдЕрдиреБрдХрд░рдгрд┐рдд" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреЗрдПрд╕ рдбреЗрдЯрд╛рд╡реНрдпреВ рдПрдкреАрдЖрдИ (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt32) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрд╕ рдЫрджреНрдо рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЙрджрд╛рд╣рд░рдг:

type Vector3 =
    val mutable view: DataView
    val mutable offset: int32
    static member XOffset=0
    static member YOffset=4
    static member ZOffset=8
    new(v: DataView,o:int32) = {
      view=v;
      offset=o;
    }
    member __.Wrap(v: DataView,o:int32) = {
      view=v;
      offset=o;
    }
    member __.X
        with get() = __.view.getInt32(__.offset+Vector3.XOffset)
        and set(v) = __.view.setInt32(__.offset+Vector3.XOffset,v)
    member __.Y
        with get() = __.view.getInt32(__.offset+Vector3.YOffset)
        and set(v) = __.view.setInt32(__.offset+Vector3.YOffset,v)
    member __.Z
        with get() = __.view.getInt32(__.offset+Vector3.ZOffset)
        and set(v) = __.view.setInt32(__.offset+Vector3.ZOffset,v)       

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

рдЗрдВрдЯрд░рдСрдк (рдПрдлрдПрдлрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рд▓рд┐рдП рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдЪреНрдЪреА рдореЗрдореЛрд░реА рд░рд┐рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдХрд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ: 1) рдЗрдВрдЯрд░рдСрдк рдХреЛрдб рдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдиреЗрдЯрд┐рд╡ рдХреЛрдб (рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрдВрдкрд╛рдЗрд▓рд░, рд╡рд┐рднрд┐рдиреНрди рдЯреВрд▓рдЪреЗрди, рдЕрд▓рдЧ рдмрд┐рд▓реНрдб/рдЯреЗрд╕реНрдЯ/рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЖрджрд┐) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗрдВ 2) рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЗрдВрдЯрд░рдСрдк рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреА рдореЗрдореЛрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред + рдПрдлрдПрдлрдЖрдИред рдпрд╣ рдХреЛрдИ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ .NET рдореЗрдВ рдкрд┐рдирд╡реЛрдХ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╣реИред

рд╕реА:
[1] https://en.wikipedia.org/wiki/Struct_ (C_programming_language)
редрдЬрд╛рд▓
[2] https://www.developerfusion.com/article/84519/mastering-structs-in-c/
рдЬреЗ рдПрд╕
[3] https://github.com/TooTallNate/ref-struct

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг @zpodlovics рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рднреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ (рдЬреИрд╕реЗ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдПрдХ рд╕рд░рдгреА рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЖрджрд┐) ) рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Fable рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП Arrays рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХ рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдХрд┐ WebAssembly рд╕рдорд░реНрдерди .NET/F# рдкрд░ рдЖ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ .NET рдореЙрдбрд▓ рдХреЗ рдХрд░реАрдм рд╣реЛрдЧрд╛ред рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ Fable F# рдХреЛ JS рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реАрдм рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реИ) рдФрд░ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдХреЗ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдореМрдЬреВрджрд╛ рдЯреВрд▓рд┐рдВрдЧ/рд▓рд┐рдмрд╛рд╕ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВред

@alfonsogarciacaro рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ncave picture ncave  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alfonsogarciacaro picture alfonsogarciacaro  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

et1975 picture et1975  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stkb picture stkb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jwosty picture jwosty  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ