This line created some kind of infinite loop.
-- η abstraction
--------------------------------
eta, etatop :: Transform
-- η abstraction
--------------------------------
eta, etatop :: Transform
-eta expr | is_fun expr && not (is_lam expr) = do
eta expr | is_fun expr && not (is_lam expr) = do
let arg_ty = (fst . Type.splitFunTy . CoreUtils.exprType) expr
id <- mkInternalVar "param" arg_ty
eta expr | is_fun expr && not (is_lam expr) = do
let arg_ty = (fst . Type.splitFunTy . CoreUtils.exprType) expr
id <- mkInternalVar "param" arg_ty