
Hi Evan,
You can also reuse the name exactly by using bind+return instead of let: test filename = do is_dir <- doesDirectoryExist filename filename <- return $ if not is_dir then filename else filename
I'm not a huge fan of the prime thing because it's tiny and easy to miss and if you forget it you probably won't get a type error, you'll just get a bug, possibly a subtle one. Besides, what's the next step? filename''? filename'''?
Nice. Good solution. ``imperative style'' is not a bad idea when I'm
not used to the ``pure functional style''
E.g.
filename <- return $ combine filename "Makefile"
Similar to the other imperative language
filename = joinPath(filename,"Makefile")
and I often write similar code in EmacsLisp also.
It is not so buggy, because we live in "imperitive programming" for
long time
Best Regards
Chunye Wang