{-| Module : Input Description : Defines input structure Copyright : (c) David Janin, Simon Archipoff, 2016 License : see the LICENSE file in the distribution Maintainer : janin@labri.fr Stability : experimental Defines timed list of temporal values (aka atoms) that can be created and updated on the fly from inputs. -} {-# OPTIONS_GHC -Wall -fno-warn-name-shadowing #-} {-# LANGUAGE GADTs, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-} module Reactive.Input where -------------------------------------------------------------------- -- * Input lists of temporal values (actual version) -------------------------------------------------------------------- -- Faire de l'entrée un arbre binaire indexé avec deux types d'identifiant d'ID -- DID i (delay) VID (durée note), la fonction copycatQ se chargeant d'aglomérer -- les notes reçues (via reduceQ) en même temps pour en faire une qlist... -- | Input qlists, built over duration type 'd' and input value type 'iv' data InQList d iv where InQList :: [(d,iv)] -> IDQ d iv -> InQList d iv InQUndef :: InQList d iv InQEnd :: InQList d iv deriving (Show) -- | Input delayed qlists, built over duration type 'd' and input value type 'iv' -- with invariant property -- -- prop> In every value (IDQ d iv) we should have (partialCompare 0 d) == Just LT data IDQ d iv = IDQ d (InQList d iv) deriving (Show)