Di fintech, kita sering harus memproses sejumlah besar data nilai tukar mata uang. Kami mendapatkan data dari sumber yang berbeda, dan masing-masing dari mereka memiliki ide sendiri tentang bagaimana memperkirakan angka untuk besok, lusa, bulan berikutnya, dan bahkan tiga tahun ke depan. Jika seseorang tahu bagaimana cara memprediksi program dengan benar, itu akan menjadi hal yang tepat untuk menutup bisnis dan dengan bodohnya mengubah uang bolak-balik. Beberapa sumber lebih dapat dipercaya, beberapa memasok sepenuhnya sampah, dengan inklusi yang jarang dari nilai yang hampir benar, tetapi untuk pasangan eksotis. Tugas kami adalah menyaring puluhan ribu nilai per detik ini dan menentukan apa yang harus ditunjukkan kepada pelanggan. Kita perlu menyaring satu-satunya nilai yang benar dari satu ton tanah dan lumpur, seperti flamingo lakukan saat makan malam.
Ciri khas khusus flamingo adalah paruhnya yang besar dan melengkung, dengan bantuan mereka menyaring makanan dari air atau lanau.
- wiki
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
, ( ), β β .
!