Re: [Haskell-cafe] minor refactoring problem

On Tue, Nov 29, 2011 at 2:54 AM, Martin DeMello
On Tue, Nov 29, 2011 at 2:29 AM, Holger Siegel
wrote: fromRawFile, fromSavedFile :: String -> IO [PairBox] fromRawFile = mapM (\x -> makePair (x, "")) . lines fromSavedFile = mapM makePair . parseFile
setEditor :: Editor -> [PairBox] -> IO () setEditor ed = writeIORef ed . V.fromList
importFile, loadFile :: Editor -> String -> IO () importFile ed = readfile >=> fromRawFile >=> setEditor loadFile ed = readfile >=> fromSavedFile >=> setEditor
Wow, very nice! First time I've truly grasped what >=> is good for. I'll need to go see where else I can use it in my code.
Quick question: what's the difference between importFile ed = readfile >=> fromRawFile >=> setEditor ed and importFile = readfile >=> fromRawFile >=> setEditor that the former compiles but the latter doesn't? martin
martin

Martin,
Quick question: what's the difference between
importFile ed = readfile >=> fromRawFile >=> setEditor ed
and
importFile = readfile >=> fromRawFile >=> setEditor
that the former compiles but the latter doesn't?
Note that, in Haskell, function application has higher priority then any other infix operation. So, importFile ed = readfile >=> fromRawFile >=> setEditor ed is the same as importFile ed = readfile >=> fromRawFile >=> (setEditor ed) If you write importFile = readfile >=> fromRawFile >=> setEditor then this is (via eta expansion) more or less equivalent to importFile ed = (readfile >=> fromRawFile >=> setEditor) ed which is clearly not the same as the original definition. HTH, Stefan
participants (2)
-
Martin DeMello
-
Stefan Holdermans