open import FRP.JS.RSet using ( RSet ; _⇒_ ; ⟦_⟧ ; ⟨_⟩ ) module FRP.JS.Event where infixr 4 _∪_ postulate Evt : RSet → RSet map : ∀ {A B} → ⟦ A ⇒ B ⟧ → ⟦ Evt A ⇒ Evt B ⟧ ∅ : ∀ {A} → ⟦ Evt A ⟧ _∪_ : ∀ {A} → ⟦ Evt A ⇒ Evt A ⇒ Evt A ⟧ accumBy : ∀ {A B} → ⟦ ⟨ B ⟩ ⇒ A ⇒ ⟨ B ⟩ ⟧ → B → ⟦ Evt A ⇒ Evt ⟨ B ⟩ ⟧ {-# COMPILED_JS map function(A) { return function(B) { return function(f) { return function(s) { return function(e) { return e.map(function (t,v) { return f(t)(v); }); }; }; }; }; } #-} {-# COMPILED_JS ∅ function(A) { return require("agda.frp.signal").zero; } #-} {-# COMPILED_JS _∪_ function(A) { return function(s) { return function(x) { return function(y) { return x.merge(y); }; }; }; } #-} {-# COMPILED_JS accumBy function(A) { return function(B) { return function(f) { return function(b) { return function(s) { return function(e) { return e.accumBy(function(t,b,a) { return f(t)(b)(a); },b); }; }; }; }; }; } #-} tag : ∀ {A B} → ⟦ B ⟧ → ⟦ Evt A ⇒ Evt B ⟧ tag b = map (λ _ → b)