module Eta where

data T = MkT
newtype Foo = Foo T

lift :: Foo -> T
lift (Foo x) = bof x
  -- The point is that we expect
  --   lift = bof |> co
  -- not
  --   lift = \fx -> bof (fx |> co)

bof :: T -> T
{-# NOINLINE bof #-}
bof MkT = MkT
