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

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to