This is a stylistic issue and it is certainly objective but I personally prefer using "where" a lot as opposed to let ... in and lambdas. You use lambdas inline with maps a lot. That is perfectly valid and your lambdas are pretty simple, but I find it easier to read to figure out a function name that is descriptive and put it in a where rather than a lambda. That way, someone else (or perhaps you at a later date) can easily scan through the function definitions and read what is being done in more or less plain english.
Hi all,I'm new to Haskell and I'd like you to take a look at one of my programs and tell me how you would improve it (in terms of efficiency, style, and so on!).The source code is here: https://github.com/lbolla/stanford-cs240h/blob/master/lab1/lab1.hsThe program is an implementation of this problem: http://www.scs.stanford.edu/11au-cs240h/labs/lab1.html (basically, counting how many times a word appear in a text.)(I'm not a Stanford student, so by helping me out you won't help me to cheat my exam, don't worry!)I've implemented 3 versions of the algorithm:
- a Haskell version using the standard "sort": read all the words from stdin, sort them and group them.
- a Haskell version using map: read all the words from stdin, stick each word in a Data.Map incrementing a counter if the word is already present in the map.
- a Python version using defaultdict.
I timed the different versions and the results are here: https://github.com/lbolla/stanford-cs240h/blob/master/lab1/times.png.The python version is the quickest (I stripped out the fancy formatting before benchmarking, so IO is not responsible for the time difference).Any comments on the graph, too?Thanks a lot!L.
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners