ΠΡΠ°Π΅Π½ ΡΡΠΎΠΊ: 01.04.2019Π³, 23:59
Π’ΠΎΠ²Π° Π΅ ΠΏΡΡΠ²Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΎΡ ΠΊΡΡΡΠ° Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Ρ Elixir
.
ΠΠ°ΡΠΈΠ½ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄ Π΅ ΠΊΠ°ΡΠΎ Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ Π² ΡΠΎΠ²Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΠΎ Π½Π΅Π³ΠΎ ΠΈΠΌΠ°ΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΠΈΠ΅ ΠΈ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π»ΠΈΡΠ΅ Π² ΠΊΡΡΡΠ°. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΡΠ΅ Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄. ΠΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΄Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π° ΡΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈ Π΄Π°Π²Π°ΠΌΠ΅ Π½Π°ΡΠΎΠΊΠΈ.
ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΏΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈΡΡ ΡΡΠΎΠΊ, ΡΠΎ ΠΠΈΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΡΡΡΠΏΠ²Π°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, Π½ΠΎ Π½Π΅ ΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°.
- ΠΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
- ΠΠΎΠ΄ΡΡ Π²ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ (ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅
mix format
Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°)
ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Deque.
Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π² ΠΌΠΎΠ΄ΡΠ» Ρ ΠΈΠΌΠ΅ΡΠΎ Deque (Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΡΠ°ΠΊΡΠ² Π²ΡΠ² ΡΠ°ΠΉΠ»Π° lib/deque.ex
). ΠΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅Ρ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ½ ΠΏΠΎ-Π½Π°Π΄ΠΎΠ»Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² ΡΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ». ΠΡΠΌΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΏΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°.
ΠΠ΅ΠΊΡΡ Π΅ ΡΡΡΡΠΊΡΡΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½ ΠΌΠ°ΡΠΈΠ², Ρ ΠΌΠ°Π»ΠΊΠ°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°, ΡΠ΅ ΠΎΡΠ²Π΅Π½ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² ΠΊΡΠ°Ρ Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° "ΠΌΠ°ΡΠΈΠ²Π°". ΠΡΡΠ³Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π΅, ΡΠ΅ Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΡΡΡΠΏΠ²Π°ΠΌΠ΅ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π΄Π΅ΠΊΠ°, ΡΡΠ΅Π· ΡΠ΅Ρ Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ (ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡΡΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² "Π΄Π΅ΠΊ" Π²ΠΈΠ½Π°Π³ΠΈ Π·Π°ΠΏΠΎΡΠ²Π° ΠΎΡ 0). ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ "Π±ΡΡΠ·ΠΈ" (Π»ΠΎΠ³Π°ΡΠΈΡΠΌΠΈΡΠ½Π°ΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΎΠ²Π° ΡΡΠ»ΠΎΠ²ΠΈΠ΅) - Π°ΠΊΠΎ Π½Π΅ ΡΠΏΠ°Π·ΠΈΡΠ΅ ΡΠΎΠ²Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΡΠΎΡΠΊΠΈΡΠ΅.
Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΏΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°, Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ "Π΄Π΅ΠΊ", ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ %Deque{}. (Π ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π΅ Π΄Π°Π΄Π΅Π½Π° Π΅Π΄Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΈΠ»ΡΡΡΡΠΈΡΠ°Π½Π΅, ΡΡ ΠΎΠ±Π°ΡΠ΅ Π½Π°ΡΠΎΡΠ½ΠΎ Π½Π΅ Π΅ Π΄ΠΎΠ±ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° Π½Π΅ΡΠΎ Π΄ΡΡΠ³ΠΎ)
ΠΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠΈ. ΠΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ private ΡΡΠ½ΠΊΡΠΈΠΈ (defp). ΠΡΡΠΊΠ° ΠΏΡΠ±Π»ΠΈΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Π½Π° Deque.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π° %Deque{}
ΡΡΠ·Π΄Π°Π²Π° ΠΏΡΠ°Π·Π΅Π½ "Π΄Π΅ΠΊ". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° "Π΄Π΅ΠΊ", ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° Π΅Π΄Π½ΠΎ ΠΏΠΎΠ»Π΅ (:content) Π² ΠΊΠΎΠ΅ΡΠΎ Π΄ΡΡΠΆΠΈΠΌ ΡΠΏΠΈΡΡΠΊ.
iex> %Deque{}
%Deque{content: []}
iex> Deque.new()
%Deque{content: []}
iex> %Deque{} == Deque.new()
true
ΠΡΡΡΠ° Π±ΡΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΡΠ΅ Π² deque.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.size
3
ΠΡΡΡΠ° Π½ΠΎΠ² "Π΄Π΅ΠΊ", ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° deque, Π½ΠΎ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ element.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.push_back(:four)
%Deque{content: [1, 2.0, "three", :four]}
ΠΡΡΡΠ° Π½ΠΎΠ² "Π΄Π΅ΠΊ", ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° deque, Π½ΠΎ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΡΡΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ element.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.push_front(:zero)
%Deque{content: [:zero, 1, 2.0, "three"]}
ΠΡΡΡΠ° Π½ΠΎΠ² "Π΄Π΅ΠΊ", ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° deque, Π½ΠΎ Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ. ΠΠΊΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡ "Π΄Π΅ΠΊ" ΡΠ° 0, ΡΠΎ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ %Deque{}
. ΠΠΊΠΎ deque Π½ΡΠΌΠ° Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ deque.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.pop_back
%Deque{content: [1, 2.0]}
iex> %Deque{content: []} |> Deque.pop_back
%Deque{content: []}
iex> ( %Deque{content: [1]} |> Deque.pop_back ) == %Deque{}
true
ΠΡΡΡΠ° Π½ΠΎΠ² "Π΄Π΅ΠΊ", ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° deque, Π½ΠΎ Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°Ρ ΠΏΡΡΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ. ΠΠΊΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡ "Π΄Π΅ΠΊ" ΡΠ° 0, ΡΠΎ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ %Deque{}
. ΠΠΊΠΎ deque Π½ΡΠΌΠ° Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ deque.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.pop_front
%Deque{content: [2.0, "three"]}
iex> %Deque{content: []} |> Deque.pop_front
%Deque{content: []}
iex> ( %Deque{content: [1]} |> Deque.pop_front ) == %Deque{}
true
ΠΡΡΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² deque. ΠΠΊΠΎ "Π΄Π΅ΠΊΡΡ" Π΅ ΠΏΡΠ°Π·Π΅Π½ Π²ΡΡΡΠ° nil
.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.last
"three"
iex> Deque.new() |> Deque.last
nil
ΠΡΡΡΠ° ΠΏΡΡΠ²ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² deque. ΠΠΊΠΎ "Π΄Π΅ΠΊΡΡ" Π΅ ΠΏΡΠ°Π·Π΅Π½ Π²ΡΡΡΠ° nil
.
iex> %Deque{content: [1, 2.0, "three"]} |> Deque.first
1
iex> Deque.new() |> Deque.first
nil
ΠΡΡΡΠ° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ n ΠΎΡ deque. ΠΠΊΠΎ "Π΄Π΅ΠΊΡΡ" Π½ΡΠΌΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ n ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π²ΡΡΡΠ° nil
, Π° Π°ΠΊΠΎ n Π½Π΅ Π΅ ΡΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π³ΡΠ΅ΡΠΊΠ° (ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΈ Π΄Π° Π΅).
iex> deque = %Deque{content: [1, 2.0, "three"]}
%Deque{content: [1, 2.0, "three"]}
iex> deque |> Deque.access_at(0)
1
iex> deque |> Deque.access_at(1)
2.0
iex> deque |> Deque.access_at(2)
"three"
iex> deque |> Deque.access_at(3)
nil
iex> Deque.access_at(deque, "2")
** (FunctionClauseError) no function clause matching in ...
ΠΡΡΡΠ° Π½ΠΎΠ² "Π΄Π΅ΠΊ", ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° deque, Π½ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ n Π΅ ΡΠΌΠ΅Π½Π΅Π½ Ρ element. ΠΠΊΠΎ Π½ΡΠΌΠ° Π΅Π»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡ n ΠΈΠ»ΠΈ n Π½Π΅ Π΅ ΡΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π³ΡΠ΅ΡΠΊΠ° (ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΈ Π΄Π° Π΅).
iex> deque = %Deque{content: [1, 2.0, "three"]}
%Deque{content: [1, 2.0, "three"]}
iex> deque |> Deque.assign_at(0, :zero)
%Deque{content: [:zero, 2.0, "three"]}
iex> deque |> Deque.assign_at(1, :one)
%Deque{content: [1, :one, "three"]}
iex> deque |> Deque.assign_at(2, :two)
%Deque{content: [1, 2.0, :two]}
iex> deque |> Deque.assign_at(3)
** (FunctionClauseError) no function clause matching in ...
iex> deque |> Deque.assign_at("2")
** (FunctionClauseError) no function clause matching in ...
ΠΠ° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Deque Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ Collectable ΠΈ Enumerable. ΠΠ° ΡΠ΅Π»ΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π΄Π²Π°ΡΠ° ΠΌΠΎΠ΄ΡΠ»Π°.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Collectable, ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ :
iex> deque = 0..5 |> Enum.into Deque.new
%Deque{content: [0, 1, 2, 3, 4, 5]}
iex> [:a, :b, :c] |> Enum.into deque
%Deque{content: [0, 1, 2, 3, 4, 5, :a, :b, :c]}
ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ Enumerable Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π° Enum:
iex> deque = %Deque{content: [0, 1, 2, 3, 4, 5]}
%Deque{content: [0, 1, 2, 3, 4, 5]}
iex> deque |> Enum.take 2
[0, 1]
iex> deque |> Enum.drop 3
[3, 4, 5]
iex> deque |> Enum.map &(&1*&1)
[0, 1, 4, 9, 16, 25]
iex> deque |> Enum.reverse
[5, 4, 3, 2, 1, 0]