edn: рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдбреЗрдЯрд╛ рдиреЛрдЯреЗрд╢рди

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

{:name "edn" :implementations #{"clojure" "java" "ruby" "python" "c" "javascript" "haskell" "erlang"} :related "clojure" :encoding :UTF-8} 


рджрд┐рдЦрд╛рд╡рдЯ

Edn рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ JSON рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИ: рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рджрд┐рдЦрд╛рдИ рджреА, рдФрд░ рдлрд┐рд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдмрд╕реЗрдЯ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред рдпрджрд┐ JSON рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡рдЬ рднрд╛рд╖рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рддреЛ edn рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреНрд▓реАрдЬреНрдпреЛрд░ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛, edn рдФрд░ JSON рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ JSON рдЕрдм рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз, рд╕рд░рд▓ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдореИрдВ JSON рд╕реЗ рдЗрд╕рдХреЗ рдЕрдВрддрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ edn рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдПрдбрди JSON рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рддрд╛рд░, рд╕рдВрдЦреНрдпрд╛, рдмреВрд▓рд┐рдпрди рдорд╛рдиред рдирдП рднреА рд╣реИрдВ:

рд╢реВрдиреНрдп

рдИрдбреАрдПрди nil рдорд╛рди рдХреЛ nil рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред JSON null рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдХреЗрдд (рдЕрдХреНрд╖рд░)

edn рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдПрдХ рдмреИрдХрд╕реНрд▓реИрд╢ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: \e , \d , \n ред рдЖрдк UTF8: \u2603 рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдкреВрд░реНрдг: \newline , \return , \space , \tab рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
JSON рдореЗрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд▓рдВрдмрд╛рдИ 1 рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкреНрд░рддреАрдХ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ edn рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддреАрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреНрд░рдореБрдЦ рдкрд╛рддреНрд░

рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдкреНрд░рдореБрдЦ рдЪрд░рд┐рддреНрд░ рдХреНрдпрд╛ рд╣реИрдВред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЧрдгрдирд╛ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИред рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдпреЗ рдорд╛рди рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рджрд░реНрд╢рди рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкреНрд░рдерд╛рдЧрдд рд╣реИред рдореБрдЦреНрдп рд╡рд░реНрдг рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ :: :name :lastname :female :lastname :green ред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдорд╛рдгрд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдо рд▓рд┐рд╕реНрдкред

JSON рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдФрд░ рддреБрд▓рдирд╛ рдореЗрдВ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

ednJSON
 {:name "Jack" :lastname "Brown" :gender :male} 

 {"name": "Jack", "lastname": "Brown", "gender": "male"} 



рд╕рдВрдЦреНрдпрд╛

edn 2 рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХред рдпрд╣ рдкреВрд░реНрдгрд╛рдВрдХ N рд▓рд┐рдП рдкреВрд░реНрдгрд╛рдВрдХ N рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗ рд▓рд┐рдП M рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдордирдорд╛рдирд╛ рд▓рдВрдмрд╛рдИ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

 [12345678891231231231232133N, 123.123123123123123213213M] 


рд╡реЗрдХреНрдЯрд░ рдХрд╛

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

 [1 2 3 "Hello" "World"] 


рдкреНрд░рджрд░реНрд╢рди (рдирдХреНрд╢реЗ)

JSON рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред Edn рдореЗрдВ, рдорд╛рди рдХреЛ рдХреБрдВрдЬреА рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ)ред рдХрдорд╛рд╕ рдХреЛ рднреА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдВрдЬреА рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХреАрд╡рд░реНрдб:

 {:name "Jack" :lastname "Brown" :gender :male 42 54} 


рдпрд╣рд╛рдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рдирдЪрд┐рддреНрд░рдг :name :lastname :name :lastname :gender рдФрд░ 42 , рдорд╛рди рдХреНрд░рдорд╢рдГ рд╣реИрдВ, "Jack" , "Brown" :lastname :male , 54 ред

рд╕реЗрдЯ

edn рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ #{val1 val2 val3} рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рд╕реЗрдЯ рдореЗрдВ рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрд╛рд░реНрд╕рд░реНрд╕ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП HashSet , HashSet рд▓рд┐рдП PersistentHashSet рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЗрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ, рдХреЛрдИ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг: рд╕реАрдЬрди рдФрд░ 3 рд░рдВрдЧреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕реЗрдЯ рдХрд░реЗрдВ:

 {:seasons #{:winter :spring :summer :autumn} :colors #{[255 0 0] [0 255 0] [0 0 255]}} 


рд╕реВрдЪрд┐рдпреЛрдВ

edn рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕реВрдЪреА рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рдХреЛрдИ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рд░реНрд╕рд░ рдХрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИ, рдпрд╣ рдХрд┐рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рдпрд╣ рд╕реЛрдЪрдирд╛ рдЖрдо рддреМрд░ рдкрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реВрдЪреА рдЙрджрд╛рд╣рд░рдг:

 (1 2 3 4 5) 


рд╡рд░реНрдг (рдкреНрд░рддреАрдХ)

рдХреНрд▓реЛрдЬрд░ рдореЗрдВ, рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди: a , b , i , hello , persons ред рдХрдИ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреНрд░рддреАрдХ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣рд╛рдЗрдлрд╝рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: prime-numbers , visited-nodes ред рдЙрдирдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЕрдХреНрд╖рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдореНрди рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:ред . * + ! - _ ? $ % & = . * + ! - _ ? $ % & = ред рдЬрдм рд░реЗрдЦрд╛рдПрдБ рдФрд░ рдореБрдЦреНрдп рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореЗрд░реЗ рд▓рд┐рдП edn рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реЛрдЪрдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдорд┐рдХ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 [:find ?x :where [?x :foo]] 
?x рдЪрд░рд┐рддреНрд░ рд╣реИред

рддрддреНрд╡реЛрдВ рдХреЛ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛

edn рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЯреИрдЧ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рддреАрдХ рдХреЗ рдмрд╛рдж # рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: #inst , #uuid , #myapp/Person ред рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд░, рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрддреНрд╡ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХрд╛ рддрддреНрд╡, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрдирдкреБрдЯ рддрд░реНрдХреЛрдВ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг:

 #myapp/Person {:first "Fred" :last "Mertz"} 

рдпрд╣рд╛рдВ, #myapp/Person рдЯреИрдЧ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ myapp.Person рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ), рдпрд╛ рдРрд╕рд╛ рдХреБрдЫред

 #inst "1985-04-12T23:20:50.52Z" 

рд╣реИрдВрдбрд▓рд░ RFC-3339 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд░реАрдЦ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

 #uuid "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" 

рд╣реИрдВрдбрд▓рд░ UUID рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо 2 рдЯреИрдЧ рдЗрдирд▓рд╛рдЗрди рд╣реИрдВ рдФрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕реАрдорд╛ рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреИрдЧ рдореЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ #myapp/Person : рдпрд╣рд╛рдБ myapp рдирд╛рдо рд╕реНрдерд╛рди рд╣реИред рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдмрд┐рдирд╛ рдЯреИрдЧ (рдЙрджрд╛ред #inst , #uuid ) рдорд╛рдирдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВред

рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП ; ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд▓рд╛рдЗрди рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 { :red [255 0 0] ; Red 255, green 0, blue 0 :orange [255 127 0] ; Red 255, green 127, blue 0 } 

Edn рдХрд╛ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг

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

 [{:name "Jack" :lastname "Brown" :roles #{:admin :operator} :last-visited #inst "2013-04-12T23:20:50.52Z" :id #uuid "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"} {:name "John" :lastname "Black" :roles #{:user} :last-visited #inst "2013-04-12T20:20:50.52Z" :id #uuid "b371b600-b175-11e2-9e96-0800200c9a66"}] 


рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ

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

рд╕рдВрджрд░реНрдн

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рд╡рд░рдг: github.com/edn-format/edn
рдЬрд╛рд╡рд╛, рд░реВрдмреА, рдЕрдЬрдЧрд░, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╣реИрд╕реЗрд▓ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: github.com/edn-format/edn/wiki/Implementations
рд╣реИрдХрд░ рд╕рдорд╛рдЪрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛: news.ycombinator.com/item?id=4487462 рд╡реЗ рд╕рд┐рд░реНрдл "рдХреНрдпреЛрдВ edn рдЕрдЧрд░ JSON рд╣реИ?"

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


All Articles