@@ -27,7 +27,9 @@ elements = let iee = int ==> element ==> element in
27 , "width" -: iee
27 , "width" -: iee
28 , "height" -: iee
28 , "height" -: iee
29 , "size" -: int ==> iee
29 , "size" -: int ==> iee
30+ , "color" -: color ==> element ==> element
30 , "box" -: iee
31 , "box" -: iee
32+ , "rectangle" -: int ==> int ==> element
31 , "rightedText" -: text ==> element
33 , "rightedText" -: text ==> element
32 , "centeredText" -: text ==> element
34 , "centeredText" -: text ==> element
33 , "justifiedText" -: text ==> element
35 , "justifiedText" -: text ==> element
@@ -196,8 +198,12 @@ funcs =
196 , "Nil" -:: listOf a
198 , "Nil" -:: listOf a
197 , "Just" -:: a ==> maybeOf a
199 , "Just" -:: a ==> maybeOf a
198 , "Nothing" -:: maybeOf a
200 , "Nothing" -:: maybeOf a
199− , "elmRange" -:: int ==> int ==> listOf int
201+ , "curry" -:: (tupleOf [a,b] ==> c) ==> a ==> b ==> c
200− ]
202+ , "uncurry" -:: (a ==> b ==> c) ==> tupleOf [a,b] ==> c
203+ ] ++ map tuple [0..8]
205+tuple n = ("Tuple" ++ show n, Forall [1..n] [] $ foldr (==>) (tupleOf vs) vs)
206+ where vs = map VarT [1..n]
203 [ "and" -:: listOf bool ==> bool
209 [ "and" -:: listOf bool ==> bool
@@ -232,11 +238,20 @@ lists =
232 ] ++ map (numScheme (\n -> listOf n ==> n)) [ "sum", "product"
238 ] ++ map (numScheme (\n -> listOf n ==> n)) [ "sum", "product"
233 , "maximum", "minimum" ]
239 , "maximum", "minimum" ]
242+ [ "maybe" -:: b ==> (a ==> b) ==> maybeOf a ==> b
243+ , "isJust" -:: maybeOf a ==> bool
244+ , "isNothing" -:: maybeOf a ==> bool
245+ , "fromMaybe" -:: a ==> maybeOf a ==> a
246+ , "consMaybe" -:: maybeOf a ==> listOf a ==> listOf a
247+ , "catMaybes" -:: listOf (maybeOf a) ==> listOf a
248+ , "catMaybes" -:: (a ==> maybeOf b) ==> listOf a ==> listOf b
236-------- Everything --------
251-------- Everything --------
238hints = mapM (\(n,s) -> (,) n `liftM` rescheme s) hs
253hints = mapM (\(n,s) -> (,) n `liftM` rescheme s) hs
239 where hs = concat [ funcs, lists, signals, math, bools, str2elem, textAttrs
254 where hs = concat [ funcs, lists, signals, math, bools, str2elem, textAttrs
240 , elements, directions, colors, lineTypes, shapes
255 , elements, directions, colors, lineTypes, shapes
241− , concreteSignals, casts, polyCasts, json
256+ , concreteSignals, casts, polyCasts, json, maybeFuncs