[Haskell-cafe] minor refactoring problem

Stefan Holdermans stefan at vectorfabrics.com
Tue Nov 29 09:55:24 CET 2011


Martin,

> (The trick with `flip` is tempting, but again at the
> cost of having to peer rather too closely at the implementation of
> processFile when reading the code).

That "trick" is of course completely orthogonal. One could just as well write:

  processFile :: (String -> [a]) -> (a -> (String, String)) -> Editor -> String -> IO ()
  processFile f g ed path = do
    s <- readFile path
    ps -> mapM (makePair . g) (f s)
    es -> return $ V.fromList ps
    writeIORef ed es

  importFile = processFile lines (\x -> (x, ""))
  loadFile   = processFile parseFile id

Cheers,

  Stefan



More information about the Haskell-Cafe mailing list