@@ -142,6 +142,7 @@ json = prefix "JSON"
142142
143143-------- Signals --------
144144
145+lyft n = sig (n+1) ("lift" ++ show n)
145146sig n name = (,) name $ Forall [1..n] [] (fn ts ==> fn (map signalOf ts))
146147 where fn = foldr1 (==>)
147148 ts = map VarT [1..n]
@@ -149,19 +150,21 @@ sig n name = (,) name $ Forall [1..n] [] (fn ts ==> fn (map signalOf ts))
149150signals = prefix "Signal"
150151 [ sig 1 "constant"
151152 , sig 2 "lift"
152− , sig 3 "lift2"
153− , sig 4 "lift3"
154− , sig 5 "lift4"
155− , "foldp" -:: (a ==> b ==> b) ==> b ==> signalOf a ==> signalOf b
153+ ] ++ map lyft [2..8] ++ [
154+ "foldp" -:: (a ==> b ==> b) ==> b ==> signalOf a ==> signalOf b
156155 , "foldp1" -:: (a ==> a ==> a) ==> signalOf a ==> signalOf a
157156 , "foldp'" -:: (a ==> b ==> b) ==> (a ==> b) ==> signalOf a ==> signalOf b
158157 , "count" -:: signalOf a ==> signalOf int
159− , "keepIf" -:: (a==>bool) ==> a ==> signalOf a ==> signalOf a
160− , "dropIf" -:: (a==>bool) ==> a ==> signalOf a ==> signalOf a
158+ , "countIf" -:: (a ==> bool) ==> signalOf a ==> signalOf int
159+ , "keepIf" -:: (a ==> bool) ==> a ==> signalOf a ==> signalOf a
160+ , "dropIf" -:: (a ==> bool) ==> a ==> signalOf a ==> signalOf a
161161 , "keepWhen" -:: signalOf bool ==> a ==> signalOf a ==> signalOf a
162162 , "dropWhen" -:: signalOf bool ==> a ==> signalOf a ==> signalOf a
163163 , "dropRepeats" -:: signalOf a ==> signalOf a
164164 , "sampleOn" -:: signalOf a ==> signalOf b ==> signalOf b
165+ , "merge" -:: signalOf a ==> signalOf a ==> signalOf a
166+ , "merges" -:: listOf (signalOf a) ==> signalOf a
167+ , numScheme (\n -> int ==> signalOf n ==> signalOf float) "average"
165168 ]
166169
167170http = prefix "HTTP"
@@ -200,23 +203,21 @@ concreteSignals =
200203 ]
201204
202205times = prefix "Time"
203− [ "deltas" -: signalOf time ==> signalOf time
204− , "fps" -: number ==> signalOf time
205− , "every" -: time ==> signalOf time
206− , "fpsWhen" -: signalOf bool ==> number ==> signalOf time
207−-- , "everyWhen" -: signalOf bool ==> time ==> signalOf time
208− , "before" -: time ==> signalOf bool
209− , "after" -: time ==> signalOf bool
210− , "hours" -: number ==> time
211− , "minutes" -: number ==> time
212− , "seconds" -: number ==> time
213− , "millis" -: number ==> time
206+ [ "fps" -: number ==> signalOf time
207+ , "every" -: time ==> signalOf time
208+ , "fpsWhen" -: number ==> signalOf bool ==> signalOf time
209+ , "delay" -:: time ==> signalOf a ==> signalOf a
210+ , "since" -:: time ==> signalOf a ==> signalOf bool
211+ , "hour" -: time
212+ , "minute" -: time
213+ , "second" -: time
214+ , "ms" -: time
214215 , "inHours" -: time ==> float
215216 , "inMinutes" -: time ==> float
216217 , "inSeconds" -: time ==> float
217− , "inMillis" -: time ==> float
218− , "toDate" -: time ==> date
219− , "read" -: string ==> maybeOf time
218+ , "inMss" -: time ==> float
219+ , "toDate" -: time ==> date
220+ , "read" -: string ==> maybeOf time
220221 ]
221222
222223dates =
@@ -224,8 +225,7 @@ dates =
224225 months = map (-: month) [ "Jan", "Feb", "Mar", "Apr", "May", "Jun"
225226 , "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]
226227 in prefix "Date"
227− ([ "every" -: time ==> signalOf date
228− , "read" -: string ==> maybeOf date
228+ ([ "read" -: string ==> maybeOf date
229229 , "year" -: date ==> int
230230 , "month" -: date ==> month
231231 , "day" -: date ==> int