@@ -47,6 +47,9 @@ shapes = [ twoNums (\n m -> listOf (pairOf n) ==> pairOf m ==> shape) "polygon"
47 , "filled" -: color ==> shape ==> form
47 , "filled" -: color ==> shape ==> form
48 , "outlined" -: color ==> shape ==> form
48 , "outlined" -: color ==> shape ==> form
49 , "customOutline" -: listOf int ==> color ==> shape ==> form
49 , "customOutline" -: listOf int ==> color ==> shape ==> form
50+ , scheme2 number transformable (\n t -> n ==> n ==> t ==> t) "move"
51+ , scheme2 number transformable (\n t -> n ==> t ==> t) "rotate"
52+ , scheme2 number transformable (\n t -> n ==> t ==> t) "scale"
50 ] ++ map (twoNums (\n m -> n ==> n ==> pairOf m ==> shape)) [ "ngon"
53 ] ++ map (twoNums (\n m -> n ==> n ==> pairOf m ==> shape)) [ "ngon"
52 , "oval" ]
55 , "oval" ]
@@ -141,11 +144,11 @@ concreteSignals =
142binop t = t ==> t ==> t
145binop t = t ==> t ==> t
143scheme1 super t name = (name, Forall [0] [VarT 0 :<: super] (t (VarT 0)))
146scheme1 super t name = (name, Forall [0] [VarT 0 :<: super] (t (VarT 0)))
147+scheme2 s1 s2 t name =
148+ (name, Forall [0,1] [VarT 0 :<: s1, VarT 1 :<: s2] (t (VarT 0) (VarT 1)))
144numScheme t name = scheme1 number t name
149numScheme t name = scheme1 number t name
145timeScheme name t = scheme1 time t name
150timeScheme name t = scheme1 time t name
146−twoNums f name =
151+twoNums f name = scheme2 number number f name
147− (,) name . Forall [0,1] [ VarT 0 :<: number, VarT 1 :<: number ] $
151 map (numScheme (\t -> t ==> binop t)) ["clamp"] ++
154 map (numScheme (\t -> t ==> binop t)) ["clamp"] ++