
tcfail179.hs:14:39:
    Couldn't match type `x' with `s'
      `x' is a rigid type variable bound by
          a pattern with constructor
            T :: forall s x. (s -> (x -> s) -> (x, s, Int)) -> T s,
          in a case alternative
          at tcfail179.hs:14:14
      `s' is a rigid type variable bound by
          the type signature for run :: T s -> Int at tcfail179.hs:13:1
    In the first argument of `g', namely `x'
    In the expression: g x id
    In a pattern binding: (x, _, b) = g x id
