-- The question here is whether f gets eta-expanded -- (assuming the state hack). It should, but -- didn't in GHC 6.10 module Foo where import GHC.Base {-# NOINLINE z #-} z :: State# a -> Bool z s = True {-# NOINLINE k #-} k :: Int -> State# a -> Bool k y s = False f [] = z f (x:xs) = k (length xs)