Julia: 'рд╢рд┐рдлреНрдЯ!' рдФрд░ 'рдЕрдирд╢рд┐рдлреНрдЯ!' рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рд╕рд┐рддре░ 2017  ┬╖  59рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: JuliaLang/julia

рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рд╕реНрд▓реИрдХ рдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, unshift! рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХрд╛рдлреА рдЦрд░рд╛рдм рдирд╛рдо IMHO рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░реА-1.0 рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдЪреВрдВрдХрд┐ prepend рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, unshift! -> pushfront! рдФрд░ shift! -> popfront! рдХреИрд╕реЗ?

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

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: push/pop!(first, x, ...) рдФрд░ push/pop!(last, x, ...) ред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ pop!(min, x) рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

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

рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдереЛрдХ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

| рдкреБрд░рд╛рдирд╛ | рдирдпрд╛ |
|-----|-----|
| push! | rpush! |
| pop! | rpop! |
| unshift! | lpush! |
| shift! | lpop! |

рдпрд╛ рдмрд╛рдПрдВ/рджрд╛рдПрдВ (рдкреНрд░рд╛рд░рдВрдн/рдЕрдВрдд? рдкреНрд░рдердо/рдЕрдВрддрд┐рдо?) рдХреАрд╡рд░реНрдб рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреЗ рд╣реИрдВ; рд╢рд╛рдпрдж @c42f рдХрд╛ рдЖрдЧреЗ/рдкреАрдЫреЗ рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛?

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

рдУрд╣, рдФрд░ рд╣рдо рдХрдЯреМрддреА рдореЗрдВ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА l рдФрд░ r рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдорд┐рд╕рд╛рд▓ рд╣реИ - рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред

рдореБрдЭреЗ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИред front рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдо рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ (рдЬреИрд╕реЗ Base.front ) рдФрд░ back рд╕рд╛рде рд╕рдВрдмрджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЬреБрдбрд╝рд╛рд╡ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░: head - tail рдФрд░ first - last рдЙрдирдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдЕрд░реНрдереЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдо рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреЗ рд╣реИрдВ?

hpush! , hpop! , tpush! рдФрд░ tpop! рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдХреЛ foldl рдФрд░ foldr рдЖрджрд┐ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдЪреВрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ l рдФрд░ r рдЕрдВрдд рдореЗрдВ, рд╕рдорд╛рди рдирд╛рдо pushl! , popl! , pushr! рдФрд░ popr! рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИрдВ :)

рд╕рднреА рдЪрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ, рдкреНрд░рддреНрдпрдп рд╕рдВрд╕реНрдХрд░рдг pushl! , popl! , pushr! рдФрд░ popr! рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ push! рдФрд░ pop! рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрдпреВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ рдЙрд░реНрдл pushr! рдФрд░ popr! Arrays рдХреЗ рд▓рд┐рдП рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ shift! рдФрд░ unshift! , рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ!

рдЕрдм рддрдХ, рдореБрдЭреЗ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП push*! рдФрд░ pop*! рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рддрд╛рдХрд┐ рдЯреИрдм рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╡реЗрд░рд┐рдПрдВрдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рд╕рдХреЗрдВред (рдореБрдЭреЗ r рдФрд░ l рдкреНрд░рддреНрдпрдп рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВред)

-2 рд╕реЗ r рдФрд░ l рд╢рдмреНрджрд╛рд╡рд▓реАред рдирд╛рдо рдереЛрдбрд╝реЗ рдмрджрд╕реВрд░рдд рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ 4 рд╣реИрдВред рдУрдкреА рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рддрд░рд╣ рдореИрдВ рдХреЗрд╡рд▓ рд╢рд┐рдлреНрдЯ рдФрд░ рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд┐рдлреНрдЯ рдФрд░ рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рднреА рд░рдЦ рд╕рдХреЗрдВред рдРрд╕реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ред

@JeffBezanson C++ рд╡реЗрдХреНрдЯрд░ push_front рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдирд╛рдореЛрдВ рдХреЛ shift рдореЗрдВ sh , рдФрд░ рд╕рдВрднрд╡рддрдГ рдкрд░реНрд▓ рдиреЗ рдЗрд╕реЗ рдЙрдард╛рдпрд╛ рдФрд░ unshift (http://www.perlmonks.org) рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ред /?node_id=613144) рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ (php, Javascript, ...?) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдорд┐рд╕рд╛рд▓реЗрдВ рд╣реИрдВред

рдореБрдЭреЗ рдЙрдЪрд┐рдд рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрдж рдкрд╕рдВрдж рд╣реИрдВ... :) ( unshift 1972 рд╕реЗ рдУрдИрдбреА рдбреЗрдЯрд┐рдВрдЧ рдореЗрдВ рд╣реИред)

рдпрд╛ рдХрдо рд╕реЗ рдХрдо shift! рдФрд░ unshift! рдореЗрдВ pop! рдФрд░ push! рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ:

help?> pop!
search: pop! popdisplay apropos deepcopy precompile __precompile__ peakflops promote_type
also see: `shift!` `unshift!` `push!`

  pop!(collection, key[, default])

  Delete and return the mapping for key if it exists in collection, otherwise return default, or
  throw an error if default is not specified. 

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: push/pop!(first, x, ...) рдФрд░ push/pop!(last, x, ...) ред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ pop!(min, x) рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╛ рдХрдо рд╕реЗ рдХрдо shift! рдФрд░ unshift! рдореЗрдВ pop! рдФрд░ push! рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ:

#реирейренреореп . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд

рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░, @TotalVerb!

рдпрд╛ splice! / insert! рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░реЗрдВ, first рдФрд░ last рд╕рд╛рде рдЫрджреНрдо-рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ?

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: рдкреБрд╢/рдкреЙрдк! (рдкрд╣рд▓реЗ, рдПрдХреНрд╕, ...)

рдЖрд╣ рдХреНрдпрд╛? рдареАрдХ рд╣реИ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рдЪрдирд╛рддреНрдордХ рд╡рд┐рдЪрд╛рд░ рд╣реИ :-)

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

рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ - рдпрд╣ рдореБрдЭреЗ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдореЗрдВ рдХрдореА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @mbauman рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ X[mean, :, sum] - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореМрд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдлреИрдВрд╕реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдореИрдВ рдЬрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рд╡реЗ рд╣реИрдВ:

  1. рдЪреАрдЬреЛрдВ рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВ - iffy рдЬреИрд╕реЗ "рд╢рд┐рдлреНрдЯ" рдФрд░ "рдЕрдирд╢рд┐рдлреНрдЯ" рд╣реИрдВ, рд╡реЗ рдХрд╛рдлреА рдорд╛рдирдХ рд╣реИрдВред
  2. shift! рдФрд░ unshift! рд╕реЗ popl! рдФрд░ pushl! рдирд╛рдо рдмрджрд▓реЗрдВред
  3. 2 рдХреЗ рдЕрд▓рд╛рд╡рд╛, pop! рдФрд░ push! рд╕реЗ popr! рдФрд░ pushr! рдирд╛рдо рдмрджрд▓реЗрдВред
  4. 3 рдХреЗ рдЕрд▓рд╛рд╡рд╛, pop! рдФрд░ push! рдЙрдкрдирд╛рдо popr! рдФрд░ pushr! ред

рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рез рдФрд░ реи рдХреЗ рдмреАрдЪ рд╣реВрдБ, рд▓реЗрдХрд┐рди рей рдФрд░ рек рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдЕрдкреАрд▓ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1) рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди (рдкреБрд╢рд┐рдВрдЧ рдпрд╛ рдкреЙрдкрд┐рдВрдЧ) рдХреЛ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП; push! рдФрд░ shift! рдПрдХ рдЕрдирдЬрд╛рди рдЬреЛрдбрд╝реА рд╣реИрдВ; 2) рд╢рдмреНрдж shift! рдХреЛ рдмрд┐рдЯ рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ >> , рдЬреИрд╕рд╛ рдХрд┐ "рд╢рд┐рдлреНрдЯ" рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рдЦреЛрдЬ рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; 3) рдХрдИ рдЬреВрд▓рд┐рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рд╡реИрд╕реЗ рднреА рдПрдХ рдкрд░реНрд▓/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреГрд╖реНрдарднреВрдорд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдкрд░реЛрдХреНрдд рдкрдж рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рд╣рдо рдЙрдирдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрдВ, рддреЛ circshift! рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░реЗрдВ?

рд╕реНрдЯреАрдлрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк 2 рдпрд╛ 4 рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ circshift! рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ pop рдЬреИрд╕рд╛ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ

рдкреНрд░рд╕реНрддрд╛рд╡:

| рдкреБрд░рд╛рдирд╛ | рдирдпрд╛ | рдЙрдкрдирд╛рдо |
|----:|----:|----:|
| push! | pushr! | push! |
| pop! | popr! | pop! |
| unshift! | pushl! | |
| shift! | popl! | |

рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдХрд░реНрд╖рдХ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рд╣рдо push! рдФрд░ pop! рдХреЛ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рдИрдВ рдУрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╛ рдареАрдХ рд╣реИ рдЖрдк рдзрдХреНрдХрд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реЗ рдкреЙрдкрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрдореЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ front рдФрд░ back рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрд╛рдлреА) abbrevating рд╕реЗ рд╕рд╛рдл left рдФрд░ right ред

рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдорд╛рд░реЗ рд╡реИрдХреНрдЯрд░ рд▓рдВрдмрд╡рдд рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдпрд╣ рдКрдкрд░/рдиреАрдЪреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) ред рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╛рд░рдВрдн/рд╕рдорд╛рдкреНрддрд┐ рдпрд╛ рдкреНрд░рдердо/рдЕрдВрддрд┐рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╛рдПрдВ/рджрд╛рдПрдВ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ; рдпрд╣ рд╣рдорд╛рд░реА рдХрдореА рд╢рдмреНрджрд╛рд╡рд▓реА ( foldl рдФрд░ foldr ) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдФрд░ рдХреИрд╕реЗ рд╡реИрдХреНрдЯрд░ рдЖрдорддреМрд░ рдкрд░ [a,b,c,тАж] рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ print рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВред

рдмрд╛рдПрдБ/рджрд╛рдПрдБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░реА рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реБрд╕реНрдерд╛рдкрд┐рдд рдПрдХ-рд╡рд░реНрдг рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИред

рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рд┐рд░рд╛ рдЖрдЧреЗ рдпрд╛ рдкреАрдЫреЗ рд╣реИред рдХреНрдпрд╛ рдлреНрд░рдВрдЯ рдЗрдВрдбреЗрдХреНрд╕ 1 рд╣реИ рдпрд╛ рд╡рд╣ рдмреИрдХ рд╣реИ? рд╣рд╛рдВ, рд╣рдо рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рд╡реИрдХреНрдЯрд░ рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдмрд╛рдПрдВ/рджрд╛рдПрдВ рдирд╛рдордХрд░рдг рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреИрд╕реЗ рд╕рд┐рд░реНрдл рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ! рдФрд░ рддреИрдпрд╛рд░ рдХрд░реЛ! рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рдЕрджрд┐рд╢ рд░рд╛рд╢рд┐ рд╣реИ?

рдпрд╣ рдмрд╛рддрдЪреАрдд https://github.com/JuliaLang/julia/issues/23902#issuecomment-332615200 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ https://github.com/JuliaLang/julia/issues/23902#issuecomment-332668546 , рдпрд╛рдиреА рдпрд╛ рддреЛ head / tail рдпрд╛ first / last рд╢рдмреНрджрд╛рд╡рд▓реА? :)

рдУрд╣, рдЪрд░реНрдЪрд╛ рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореЗрд░рд╛ рдХрд╣рдирд╛ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдирдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдУрд╣, рдЪрд░реНрдЪрд╛ рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореЗрд░рд╛ рдХрд╣рдирд╛ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдирдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @phaverty! рд╣рдордиреЗ рд╕рд┐рдореНрдпреБрд▓рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп @StefanKarpinski рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереА :)ред рд╢реНрд░реЗрд╖реНрда!

рдореБрдЭреЗ popfirst! , pushfirst! , poplast! , pushlast! рд╕рд╛рде pop! рдФрд░ push! рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд╕рдВрдж рд╣реИ рдмрд╛рдж рд╡рд╛рд▓рд╛ред

рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рдЕрджрд┐рд╢ рд░рд╛рд╢рд┐ рд╣реИ?

рд╕реНрдХреЗрд▓рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

"рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред"

рдУрд╣ рд╕рдордЭрд╛ред рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ,

рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ!(x::рд╡реЗрдХреНрдЯрд░{T}, y::T)

, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ y "рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬрд┐рд╕реЗ T рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХреЗ"ред рд▓реЗрдХрд┐рди, рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо (рдЕрднреА рддрдХ?) рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрдорд░ред

рдЖрдЗрдП рдПрдХ (рдЧреИрд░-рдмрд╛рдзреНрдпрдХрд╛рд░реА, рд╕реВрдЪрдирд╛рддреНрдордХ) рд╡реЛрдЯ рджреЗрдВ:

  • ЁЯСН pushr! , popr! , pushl! рдФрд░ popl! рд╕рд╛рде push! рдФрд░ pop! рдкрд╣рд▓реЗ рджреЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ
  • ЁЯСО рдЪреАрдЬреЛрдВ рдХреЛ рдпрдерд╛рд╡рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
  • рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП

рдЗрдореЛрдЬреА рдХрд╛ рд╡рд╣ рдЪреБрдирд╛рд╡ рдХреБрдЫ рд╣рдж рддрдХ рдкрдХреНрд╖рдкрд╛рддреА рд╣реИ;)ред

рдФрд░: +1: рдУрдкреАрдПрд╕ рд╕реБрдЭрд╛рд╡ рдкрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ;)

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдХреБрдЫ рд╢реЛрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордиреЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред рдЕрдм рддрдХ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ push! , pop! , shift! , рдФрд░ unshift! рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдирд╛рдо рдкрд░реНрд▓, рд░реВрдмреА рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ (https://en .wikipedia.org/wiki/Double-ended_queue#Operations)ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЗрди рдирд╛рдореЛрдВ рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд░реНрд▓ рдореЗрдВ рд╕реАрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╢рд┐рдлреНрдЯ/рдЕрдирд╢рд┐рдлреНрдЯ рдпрд╛рджрдЧрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдРрд╕рд╛ рд╢рд┐рд╡рд┐рд░ рднреА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╢/рдкреЙрдк рдПрдХ рдЦрд░рд╛рдм рдкреВрд░рдХ рдЬреЛрдбрд╝реА рд╣реИ ред

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: push/pop!(first, x, ...) рдФрд░ push/pop!(last, x, ...) ред

рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реИ рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ enqueue! рдФрд░ dequeue! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдореБрдЭреЗ рдореВрд▓ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рдПрдХ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд░рдЦ рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдЪреНрдЫреЗ-рд╕реА рдЬреЛрдбрд╝реА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ push! рдФрд░ pull! рдлреАрдлреЛ рдХреЗ рд▓рд┐рдП рдФрд░ push! рдФрд░ pop! FILO рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЕрдВрдд рдХреЗ рдмрдЬрд╛рдп рдХрддрд╛рд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреБрд╢/рдкреЙрдк рдХрд╛рдо рдХрд░реЗрдЧрд╛:

рдкреБрд░рд╛рдирд╛ | рдирдпрд╛
-------|-----
рдзрдХреЗрд▓рдирд╛! | рд░рдЦрдирд╛!
рдкреЙрдк! | рдЦреАрдВрдЪрдирд╛!
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | рдзрдХреЗрд▓рдирд╛!
рдЕрдирд╢рд┐рдлреНрдЯ! | рдкреЙрдк!

рд╣рдо рдЕрдВрдд рдореЗрдВ рдкреБрд╢/рдкреЙрдк рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдо рдмреНрд░реЗрдХрд┐рдВрдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓/рдкреБрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдХреБрдЫ рд╣рдж рддрдХ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк append! рдФрд░ prepend! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░рдорд╢рдГ push! рдФрд░ shift! рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ dequeuing рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдЪрд┐рдд рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ рдФрд░ behead рдФрд░ curtail рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдереЗ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореИрдВ рдЖ рд╕рдХрддрд╛ рдерд╛ ...

@phaverty рдЬрдм рддрдХ Vector{Any} рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛: https://github.com/JuliaLang/julia/issues/23902#issuecomment -332919287

@omus shift! рд╕реЗ push! рдирд╛рдо рдмрджрд▓рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

append! рджреЛ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ push! et. рдЕрд▓. рдПрдХ рддрддреНрд╡ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдИрдПрдордУ рдЙрд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рдпреВрдирд┐рдХреЛрдб рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ | рдпреВрдирд┐рдХреЛрдб | рдпреВрдирд┐рдХреЛрдб рдирд╛рдо | рдЙрдкрдирд╛рдо
---|---|---|---
рдзрдХреЗрд▓рдирд╛! | | рдмрд╛рд░ рд╕реЗ рдмрд╛рдПрдБ рддреАрд░ |
рдкреЙрдк! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ | рдореИрдкрд╕реНрдЯреЛ
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ |
рдЕрдирд╢рд┐рдлреНрдЯ! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ | рдореИрдкреНрд╕рдлреНрд░реЙрдо

рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдмрд╛рд░ рдХреЛ рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВред ~рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрди рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ ~ред

рдирд╛рдо рдмрджрд▓ рд░рд╣рд╛ рд╣реИ shift! рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП push! рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣реВрдВ рддреЛ рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рджреБрдЦ рд╣реЛрдЧрд╛ред рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдмрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИред

@omus , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП \mapsto ред

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

рдкреБрд░рд╛рдирд╛ | рдирдпрд╛
-- | --
рдзрдХреЗрд▓рдирд╛! | рдЖрдЦрд░реА рдЕрдВрджрд░!
рдкреЙрдк! | рдЖрдЦрд░реА рдмрд╛рд╣рд░!
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | рдкрд╣рд▓рд╛!
рдЕрдирд╢рд┐рдлреНрдЯ! | рдкрд╣рд▓реЗ рдмрд╛рд╣рд░!

рдЗрди рд╕реБрдЭрд╛рд╡реЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рд╡реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рд╣реА рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рдиреЗ рдкреБрд╢/рдкреЙрдк рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд╢рд┐рдлреНрдЯ/рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рдХреНрдпрд╛ рдирд╛рдо рд╣реИред

рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░рдВрддрд░ рддрд╣ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рддрд░реНрдХ рддреЗрдЬрд╝, рд╕рд╣реА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП? рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рд▓рд┐рдП 4 рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рд╣реЛрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдмрд╣реБ-рд╢рдмреНрдж рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдордиреЛрд░рдВрдЬрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЬреИрд╕рд╛ рдХрд┐ рдордиреЛрд░рдВрдЬрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдУрдкреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рд░рд╛рд╢рд┐ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЧрддреА рд╣реИ? рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рд╕рдордпрдкреВрд░реНрд╡ рд╣реИ? :)

рд╣рд╛рдВ, рдУрдкреА рдХреЗ рд╕реБрдЭрд╛рд╡ рдореЗрдВ 11 рдКрдкрд░ рдФрд░ 0 рдиреАрдЪреЗ рд╣реИрдВ ...

рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛, рди рдХрд┐ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдореНрдореЛрд╣рдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ pushfront! рдЕрднреА рднреА рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрдердХ рдирд╛рдордХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░рд╛ рд╕реА ++ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ pushfront! рдФрд░ popfront! ред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ pushfront! / popfront! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #25100 рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо unshift! рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ unshift! рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдП) рдпрд╣ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╣реИ, рдФрд░ (рдмреА) рдпрд╣ рдкрд░реНрд▓/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ/php/рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд░реНрд▓ рд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ

рдЗрд╕реЗ рдиреАрдЪреЗ рд╢реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ ;-)

рдЬреИрд╕рд╛ рдХрд┐ рдиреЗ #25100 рдореЗрдВ

enqueue!(::typeof(first), a, item) = unshift!(a, item)
enqueue!(::typeof(last), a, item) = push!(a, item)
dequeue!(::typeof(first), a) = shift!(a)
dequeue!(::typeof(last), a) = pop!(a)
julia> enqueue!(::typeof(first), a, item) = unshift!(a, item);

julia> enqueue!(::typeof(last), a, item) = push!(a, item);

julia> dequeue!(::typeof(first), a) = shift!(a);

julia> dequeue!(::typeof(last), a) = pop!(a);

julia> foo = [1, 2, 3]
3-element Array{Int64,1}:
 1
 2
 3

julia> enqueue!(first, foo, 0)
4-element Array{Int64,1}:
 0
 1
 2
 3

julia> dequeue!(first, foo)
0

julia> enqueue!(last, foo, 5)
4-element Array{Int64,1}:
 1
 2
 3
 5

julia> dequeue!(last, foo)
5

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ:

push!(::typeof(first), a, item) = unshift!(a, item)
push!(::typeof(last), a, item) = push!(a, item)
pop!(::typeof(first), a) = shift!(a)
pop!(::typeof(last), a) = pop!(a)

рд╣рдо push! рдФрд░ pop! рдХреЛ first рдпрд╛ last рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ push!(last, ...) рдФрд░ pop!(last, ...) ред

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

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

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

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

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

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

m-j-w picture m-j-w  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ