Documentation
Cache results of operation op under name fn
.
if correct file is found, its contents are used, otherwise op
is performed and it's results
are saved to the filed and returned from the call.
inDirectory :: FilePath -> IO a -> IO aSource