āĻĢāĻŋāĻ¨āĻā§āĻ-āĻ, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻĒā§āĻ°āĻā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§ āĻŽā§āĻĻā§āĻ°āĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻšāĻžāĻ° āĻĄā§āĻāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻžāĻ, āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ§āĻžāĻ°āĻŖāĻž āĻāĻā§ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻžāĻŽā§āĻāĻžāĻ˛, āĻĒāĻ°āĻļā§, āĻĒāĻ°ā§āĻ° āĻŽāĻžāĻ¸ āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¤āĻŋāĻ¨ āĻŦāĻāĻ°ā§āĻ° āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻšāĻžāĻ° āĻāĻā§āĻ¸āĻā§āĻ°āĻžāĻĒā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻā§āĻ āĻšāĻžāĻ° āĻāĻŦāĻŋāĻˇā§āĻ¯āĻĻā§āĻŦāĻžāĻŖā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§, āĻāĻāĻž āĻŦā§āĻ¯āĻŦāĻ¸āĻž āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻšāĻŦā§ āĻāĻŦāĻ āĻļā§āĻ§ā§ āĻŦā§āĻāĻžāĻŽāĻŋ āĻāĻ°ā§ āĻāĻžāĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŋāĻā§ āĻāĻ¤ā§āĻ¸ āĻāĻ°āĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯, āĻāĻŋāĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§, āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻ āĻŋāĻ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻ°āĻ˛ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤āĻŋ āĻ¸āĻš, āĻ¤āĻŦā§ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻĻāĻŽā§āĻĒāĻ¤āĻŋāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻšāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻāĻ āĻĻāĻļ āĻšāĻžāĻāĻžāĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻāĻŦāĻ āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° āĻ āĻŋāĻ āĻā§ āĻĻā§āĻāĻžāĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ āĻŽāĻ¯āĻŧāĻ˛āĻž āĻāĻŦāĻ āĻĒāĻ˛āĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻ āĻŋāĻ āĻŽāĻžāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ āĻŋāĻ āĻ¯ā§āĻŽāĻ¨ āĻĢā§āĻ˛ā§āĻ¯āĻžāĻŽāĻŋāĻā§āĻā§āĻ°āĻž āĻ˛āĻžāĻā§āĻā§ āĻāĻ°ā§āĨ¤
āĻĢā§āĻ˛ā§āĻ¯āĻžāĻŽāĻŋāĻā§āĻā§āĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻšāĻ˛ āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻŋāĻļāĻžāĻ˛ āĻ¨āĻŋāĻŽā§āĻ¨āĻŽā§āĻā§ āĻŦāĻžāĻāĻāĻž āĻāĻā§āĻā§, āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻĒāĻžāĻ¨āĻŋ āĻŦāĻž āĻāĻžāĻĻāĻž āĻĨā§āĻā§ āĻāĻžāĻŦāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°ā§āĨ¤
-Vicki
āĻāĻāĻžāĻŦā§āĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻŽ āĻšāĻ¯āĻŧ Vela
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻāĻŋ āĻŽā§āĻĻā§āĻ°āĻž āĻā§āĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻšāĻžāĻ° āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŋāĨ¤ āĻ¸āĻšāĻāĻ¤āĻŽ āĻ¸āĻāĻā§āĻāĻž Vela
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻāĻāĻŋ āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻŦā§:
defmodule Pairs do
use Vela,
eurusd: [sorter: &Kernel.<=/2],
eurgbp: [limit: 3, errors: 1],
eurcad: [validator: Pairs]
@behaviour Vela.Validator
@impl Vela.Validator
def valid?(:eurcad, rate), do: rate > 0
end
āĻŽāĻžāĻ¨ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§
Vela.put/3
- āĻāĻžāĻ°āĻŖ āĻšāĻŦā§
validator
āĻŽāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ°, āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ āĻĻā§āĻā§āĻ¨ āĻŦā§āĻ§āĻ¤āĻž āĻ¨āĻŋāĻā§); - āĻŦā§āĻ§āĻ¤āĻž āĻ¸āĻĢāĻ˛ āĻšāĻ˛ā§ āĻāĻžāĻ˛ āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻŽāĻžāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻŦā§, āĻ
āĻĨāĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¸āĻžāĻ°āĻŋāĻ¤ā§
:__errors__
āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ; - āĻ¯āĻĻāĻŋ āĻŦāĻžāĻāĻžāĻ āĻāĻžāĻ°āĻŖ āĻšāĻŦā§
sorter
āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻā§-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ āĻĨāĻŦāĻž āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ āĻŽāĻžāĻ¨ āĻ°āĻžāĻāĻŦā§ (āĻāĻŋāĻ˛ LIFO, āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ āĻĻā§āĻā§āĻ¨ āĻŦāĻžāĻāĻžāĻ āĻ¨āĻŋāĻā§); - āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¸āĻžāĻ°āĻŋ āĻāĻžāĻāĻāĻž āĻšāĻŦā§
:limit
āĻ¸ā§āĻˇā§āĻāĻŋāĻ° āĻāĻĒāĻ° āĻĒāĻžāĻ¸ āĻāĻ°āĻž; - āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻāĻžāĻ āĻžāĻŽā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦā§
Vela
.
iex|1 > pairs = %Pairs{}
iex|2 > Vela.put(pairs, :eurcad, 1.0)
#â %Pairs{..., eurcad: [1.0], ...}
iex|3 > Vela.put(pairs, :eurcad, -1.0)
#â %Pairs{__errors__: [eurcad: -1.0], ...}
iex|4 > pairs |> Vela.put(:eurusd, 2.0) |> Vela.put(:eurusd, 1.0)
#â %Pairs{... eurusd: [1.0, 2.0]}
āĻāĻāĻžāĻĄāĻŧāĻžāĻ Vela
āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
āĻŦā§āĻ§āĻ¤āĻž
āĻāĻāĻāĻŋ āĻ¯āĻžāĻāĻžāĻāĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¸āĻš āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ (
&MyMod.my_fun/1
), āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦā§āĻ§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ āĻĒāĻžāĻŦā§; - āĻĻā§āĻāĻŋ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻ¸āĻš āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨,
&MyMod.my_fun/2
, āĻ¸ā§ āĻāĻāĻā§āĻĄāĻŧāĻž āĻĒāĻžāĻŦā§serie, value
āĻŦā§āĻ§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯; - āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
;Vela.Validator
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ
threshold
, āĻāĻŦāĻ - āĻāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ -compare_by
, āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ āĻĻā§āĻā§āĻ¨ āĻ¤ā§āĻ˛āĻ¨āĻž āĻĨā§āĻā§ āĻāĻŽāĨ¤
āĻ¯āĻĻāĻŋ āĻŦā§āĻ§āĻ¤āĻž āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧ, āĻŽāĻžāĻ¨āĻāĻŋ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻā§-āĻāĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ; āĻ
āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻŋāĻĒāĻ˛ {serie, value}
āĻ¯āĻžāĻ¯āĻŧ :__errors_
.
āĻ¤ā§āĻ˛āĻ¨āĻž
āĻāĻ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻŽāĻžāĻ¨ āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻŋāĻā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻļā§āĻāĻžāĻ¤ā§ Vela
āĻ¤āĻžāĻĻā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ compare_by
āĻ¸āĻŋāĻ°āĻŋāĻā§āĻ° āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° (āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻžāĻ¨āĻā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž Kernel.</2
); āĻāĻ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻāĻžāĻāĻĒ āĻšāĻ¤ā§ āĻšāĻŦā§ (Vela.value() -> number())
. āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻāĻž āĻ¸āĻšāĻ & &1
.
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¤ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ comparator
āĻĄā§āĻ˛ā§āĻāĻž āĻŽāĻžāĻ¨ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ (min
/max
); āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ Date.diff/2
āĻ¤ā§āĻ˛āĻ¨āĻžāĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻĒāĻ¨āĻŋ āĻ¤āĻžāĻ°āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ āĻŋāĻ āĻĄā§āĻ˛ā§āĻāĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻĒāĻžāĻ¸ āĻāĻ°āĻž threshold
, āĻ¯āĻž āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻ
āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ
āĻ¨ā§āĻĒāĻžāĻ¤ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§ {min, max}
āĻ
āĻ¨ā§āĻ¤āĻ°. āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻļāĻ¤āĻžāĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨āĻž comparator
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ compare_by
. āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¤āĻžāĻ°āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĨā§āĻ°ā§āĻļāĻšā§āĻ˛ā§āĻĄ āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ compare_by: &DateTime.to_unix/1
(āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻŖāĻ¸āĻāĻā§āĻ¯āĻž āĻŽāĻžāĻ¨ āĻĒā§āĻ¤ā§) āĻāĻŦāĻ threshold: 1
, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻāĻŋāĻ¤āĻ°ā§ āĻĨāĻžāĻā§ā§ˇ Âąband
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŽāĻžāĻ¨ āĻĨā§āĻā§ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨āĨ¤
āĻ
āĻŦāĻļā§āĻˇā§, āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ Vela.equal?/2
āĻĻā§āĻāĻŋ āĻā§āĻ¯āĻžāĻļā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻŽāĻžāĻ¨ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§ equal?/2
āĻŦāĻž compare/2
, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§, āĻ
āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻŦā§āĻ§āĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ ==/2
.
āĻŽāĻžāĻ¨ āĻĒāĻžāĻāĻ¯āĻŧāĻž
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ˛āĻŋāĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ Vela.purge/1
, āĻ¯āĻž āĻ
āĻĒā§āĻ°āĻāĻ˛āĻŋāĻ¤ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻ¯āĻŧ (āĻ¯āĻĻāĻŋ validator
āĻāĻŦāĻĻā§āĻ§ timestamps
) āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ Vela.slice/1
āĻ¯āĻž āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻŦā§ keyword
āĻā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻžāĻ°āĻŋ āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻĒā§āĻ°āĻĨāĻŽ, āĻĒā§āĻ°āĻā§āĻ¤ āĻŽāĻžāĻ¨ āĻ¸āĻšāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ get_in/2
/pop_in/2
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻāĻŦā§āĻĻāĻ¨
Vela
āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŋāĻ°āĻŋāĻ āĻā§āĻ¯āĻžāĻļā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ
āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ GenServer
/Agent
. āĻāĻŽāĻ°āĻž āĻāĻāĻ¨āĻ āĻŦāĻžāĻ¸āĻŋ āĻā§āĻ°ā§āĻ¸ā§āĻ° āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¨āĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻā§āĻŦāĻ˛ āĻ°āĻžāĻˇā§āĻā§āĻ°ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ°āĻžāĻāĻŋ Vela
, āĻ¨ā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻ¯āĻžāĻāĻžāĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§āĨ¤
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
и Vela.purge/1
āĻ¯āĻāĻ¨āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻ¨āĻŋāĻāĻļāĻŦā§āĻĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ¸āĻŋ āĻŽāĻžāĻ¨ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻā§āĻ¤ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻāĻ˛ āĻāĻ°āĻŋ Vela.slice/1
, āĻāĻŦāĻ āĻ¯āĻāĻ¨ āĻā§āĻ°ā§āĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻ¤āĻŋāĻšāĻžāĻ¸ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ (āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻŋāĻ°āĻŋāĻ), āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻāĻāĻŋ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ - āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻžāĻāĻžāĻ āĻāĻ°āĻž - āĻŦā§āĻ§ āĻŽāĻžāĻ¨ āĻ¸āĻšāĨ¤
āĻšā§āĻ¯āĻžāĻĒāĻŋ āĻāĻžāĻāĻŽ āĻ¸āĻŋāĻ°āĻŋāĻ āĻā§āĻ¯āĻžāĻļāĻŋāĻ!
āĻāĻ¤ā§āĻ¸: www.habr.com