[Haskell-cafe] walking a directory tree efficiently
Manlio Perillo
manlio_perillo at libero.it
Wed Jan 14 09:49:21 EST 2009
Don Stewart ha scritto:
> manlio_perillo:
>> Hi.
>>
>> During a tentative (quite unsuccessfull) to convert a simple Python
>> script that prints on stdout a directory and all its subdirectory [1] in
>> a good Haskell (mostly to start to do real practice with the language),
>> I came across this blog post:
>> http://blog.moertel.com/articles/2007/03/28/directory-tree-printing-in-haskell-part-three-lazy-i-o
>>
>>
>> Since recently I read about alternatives to lazy IO (like iteratee), I'm
>> curious to know if a flexible, efficient and safe alternative exists,
>> for the task of display a directory tree.
>>
>>
>> [1] http://paste.pocoo.org/show/99523/
>>
>
> If you can do it with strict IO in Python, do the same thing in Haskell
> with System.IO.Strict.
> It should be mechanical to translate Python
> programs directly into naive IO-based Haskell using strict IO. Boring,
> but mechanical.
>
But that's not the purpose of what I'm doing ;).
I'm trying to practice with Haskell, by converting small Python scripts
I have written.
I hope, in future, to write a "big" program in Haskell.
> There's no iteratee/fold-based IO system yet.
>
Yes, I know.
By the way, I have managed to have a working program:
http://hpaste.org/13919
I would like to receive some advices:
1) I have avoided the do notation, using functions like liftM.
Is this a good practice?
Is this as efficient as using do notation?
2) I have written some support functions: mapM' and filterM'
Are they well written and generic?
Are they already available in some package?
Can you suggest better names?
3) I find
(,) node `liftM` walkTree' path
not very readable.
Is it possible to express it in a more (not too much) verbose way?
Thanks Manlio Perillo
More information about the Haskell-Cafe
mailing list