+* Can a scoped type variable denote a type scheme?
+
+* Relation between separate type sigs and pattern type sigs
+f :: forall a. a->a
+f :: b->b = e -- No: monomorphic
+
+f :: forall a. a->a
+f :: forall a. a->a -- OK
+
+f :: forall a. [a] -> [a]
+f :: forall b. b->b = e ???
+
+
+-------------------------------
+NB: all floats are let-binds, but some non-rec lets
+ may be unlifted (with RHS ok-for-speculation)
+
+
+simplArg: [use strictness]
+ [used for non-top-lvl non-rec RHS or function arg]
+ if strict-type || demanded
+ simplStrictExpr
+ else
+ simplExpr ---> (floats,expr)
+ float all the floats if exposes constr app, return expr
+
+simpl (applied lambda) ==> simplNonRecBind
+simpl (Let (NonRec ...) ..) ==> simplNonRecBind
+
+simpl (Let (Rec ...) ..) ==> simplRecBind