showsPrec 0 t .
showString ">>"
-data Obj = Obj
- -- dummy type to hold the dynamically typed value.
+type Obj = forall a . a
+ -- Dummy type to hold the dynamically typed value.
+ --
+ -- In GHC's new eval/apply execution model this type must
+ -- be polymorphic. It can't be a constructor, because then
+ -- GHC will use the constructor convention when evaluating it,
+ -- and this will go wrong if the object is really a function. On
+ -- the other hand, if we use a polymorphic type, GHC will use
+ -- a fallback convention for evaluating it that works for all types.
+ -- (using a function type here would also work).
-- | A concrete representation of a (monomorphic) type. 'TypeRep'
-- supports reasonably efficient equality.