packages feed

haskell-tools-experimental-refactorings-1.0.0.2: Language/Haskell/Tools/Refactor/Builtin/DollarApp1.hs

{-# LANGUAGE TypeFamilies, FlexibleContexts #-}
module Language.Haskell.Tools.Refactor.Builtin.DollarApp1 where

import Language.Haskell.Tools.Refactor

import Control.Reference ((.-))
import SrcLoc (RealSrcSpan)

tryItOut :: String -> String -> IO ()
tryItOut = tryRefactor (localRefactoring . dollarApp)

dollarApp :: RealSrcSpan -> LocalRefactoring
dollarApp sp = return . (nodesContained sp .- replaceExpr)

replaceExpr :: Expr -> Expr
replaceExpr (App fun (Paren arg)) = mkInfixApp fun (mkUnqualOp "$") arg
replaceExpr e = e