Hi Conal,
so if I understand this right, you'd rather not wanted `exampleC` to be eta-expanded (or the binding of `s` to be floated into the lambda)?
Or is it that you want CSE to find out that you always supply the same `t` as the first argument and share the partial application and thus the work of computing `s`?
If it's the former: GHC doesn't normally do this, unless it has found out that no sharing (of work done to evaluate `s`) would be lost through eta-expansion.
This is the case when `exampleC` is always called with two arguments, so that no binding of `s` is shared, for example.
Could you maybe post a complete module/expression representative of all uses of `exampleC`?
If it's the latter, I'm afraid I can't really help, but surely someone else can.
Cheers,
Sebastian