Dwa zegary.
Jeden strumień, wyrównany.
Podaj dwa ciągi oraz odstęp między kolejnymi elementami każdego z nich
(jako liczbę wymierną, np. 2/3, lub dziesiętną, np. 0.5).
Operator wyrównuje je do połączonego odstępu
Δc = min(Δ1, Δ2), parując każdy takt szybszego
strumienia z odpowiadającym mu taktem wolniejszego.
Odstępy
Połączony ciąg
FROM core0+core1
Tempo nadaje szybszy zegar
Sum zestawia dwa regularne strumienie obok siebie. Wynik tyka tak często jak szybsze wejście; każdy jego takt niesie bieżącą wartość obu wejść.
Prowadzenie
Odstęp wyjściowy jest krótszym z dwóch, Δc = min(Δ1, Δ2). Każdy element szybszego strumienia pojawia się dokładnie raz, w kolejności.
Podtrzymanie
Wolniejszy strumień jest odczytywany w odpowiadającym takcie, więc jego wartość powtarza się aż do nadejścia kolejnego elementu — bez interpolacji, bez zgadywania.
Dokładność
Odpowiadający takt to całkowita podłoga z ilorazu wymiernych odstępów. Dla dowolnej pary regularnych odstępów parowanie jest takie samo przy każdym uruchomieniu, co do bitu.
Ten sam operator w zapytaniu
W RQL sum zapisuje się jako + między dwoma strumieniami.
Tutaj core0 tyka co 1/10, a core1 co 1/5,
więc str1 tyka co 1/10.
Formalna definicja i dowód znajdują się w artykule. Pełne zapytanie, plan i krotki wyjściowe są na stronie głównej.