في مجال التكنولوجيا المالية ، غالبًا ما يتعين علينا معالجة كميات هائلة جدًا من بيانات أسعار صرف العملات. نحصل على بيانات من مصادر مختلفة ، ولكل منهم فكرته الخاصة حول كيفية استقراء معدلات الغد ، وبعد غد ، والشهر التالي وحتى السنوات الثلاث المقبلة. إذا عرف شخص ما كيفية التنبؤ بالدورات بشكل صحيحسيكون من الصحيح إغلاق العمل وتغيير الأموال بغباء ذهابًا وإيابًا. بعض المصادر أكثر جدارة بالثقة ، وبعضها يزود بالقمامة تمامًا ، مع شوائب نادرة من القيم الصحيحة تقريبًا ، ولكن للأزواج الغريبين. تتمثل مهمتنا في فحص عشرات الآلاف من القيم في الثانية وتحديد ما يجب إظهاره للعملاء. نحن بحاجة إلى تصفية القيمة الصحيحة الوحيدة من طن من الأوساخ والطمي ، مثل طيور النحام في العشاء.
من السمات المميزة الخاصة لطيور النحام هي منقارها الضخم والمنحني ، الذي يساعدهم على تصفية الطعام من الماء أو الطمي.
- ويكي
Vela
, . , N ( , ).
, . 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
-
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
, and Kernel.get_and_update_in/3
.
:
- (
&MyMod.my_fun/1
), ; - ,
&MyMod.my_fun/2
,serie, value
; - ,
Vela.Validator
; -
threshold
, — —compare_by
, . Comparison .
, , {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
, ( ), — — .
!