@@ -40,7 +40,7 @@ elements = let iee = int ==> element ==> element in
4040 , "centeredText" -: text ==> element
4141 , "justifiedText" -: text ==> element
4242 , "asText" -:: a ==> element
43− , "show" -:: a ==> text
43+ , "show" -:: a ==> string
4444 , "collage" -: int ==> int ==> listOf form ==> element
4545 , "fittedImage" -: int ==> int ==> string ==> element
4646 ]
@@ -145,6 +145,18 @@ signals =
145145 , "sampleOn" -:: signalOf a ==> signalOf b ==> signalOf b
146146 ]
147147
148+http =
149+ [ "send" -:: signalOf (request a) -> signalOf (response string)
150+ , "sendGet" -:: signalOf string -> signalOf (response string)
151+ , "get" -: string ==> request string
152+ , "post" -: string ==> string ==> request string
153+ , "request" -: string ==> string ==> string ==> listOf (pairOf string) ==> request string
154+ , "Waiting" -:: response a
155+ , "Failure" -:: int ==> string ==> response a
156+ , "Success" -:: a -> response a ]
157+ where request t = ADT "Request" [t]
158+ response t = ADT "Response" [t]
159+
148160concreteSignals =
149161 [ "keysDown" -: signalOf (listOf int)
150162 , "charPressed" -: signalOf (maybeOf int)
@@ -199,6 +211,15 @@ bools =
199211 , Forall [0,1] [ Context "`compare'" $ VarT 0 :<: comparable ] (VarT 0 ==> VarT 0 ==> VarT 1) )
200212 ]
201213
214+chars =
215+ [ hasType (char ==> bool)
216+ ["isDigit","isOctDigit","isHexDigit","isUpper","isLower"]
217+ , hasType (char ==> char)
218+ ["toUpper","toLower","toLocaleUpper","toLocaleLower"]
219+ , "toCode" -: char ==> int
220+ , "fromCode" -: int ==> char
221+ ]
222+
202223-------- Polymorphic Functions --------
203224
204225[a,b,c] = map VarT [1,2,3]
@@ -237,8 +258,8 @@ lists =
237258 , "foldr1" -:: (a ==> a ==> a) ==> listOf a ==> a
238259 , "foldl1" -:: (a ==> a ==> a) ==> listOf a ==> a
239260 , "scanl1" -:: (a ==> a ==> a) ==> listOf a ==> a
240− , "forall" -:: (a ==> bool) ==> listOf a ==> bool
241− , "exists" -:: (a ==> bool) ==> listOf a ==> bool
261+ , "all" -:: (a ==> bool) ==> listOf a ==> bool
262+ , "any" -:: (a ==> bool) ==> listOf a ==> bool
242263 , "reverse" -:: listOf a ==> listOf a
243264 , "take" -:: int ==> listOf a ==> listOf a
244265 , "drop" -:: int ==> listOf a ==> listOf a
@@ -275,5 +296,5 @@ hints = mapM (\(n,s) -> (,) n `liftM` rescheme s) hs
275296 where hs = concat [ funcs, lists, signals, math, bools, str2elem, textAttrs
276297 , elements, directions, colors, lineTypes, shapes
277298 , concreteSignals, casts, polyCasts, json, maybeFuncs
278− , positions, collages
299+ , positions, collages, http
279300 ]