开发者

Which is your favorite "hidden gem" package on Hackage? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling,开发者_开发百科 or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. Closed 11 years ago.

There are a lot of packages on Hackage, some well known (such as HUnit) and some less known (such as AspectAG). I'm wondering which package you think is a hidden gem that deserves more users. Maybe a useful data structure, helpers for monads, networking, test, ...?

Which is your favorite "hidden gem" package on Hackage?


Oleg Kiselyov's Iteratee. I still don't really understand how it works, but it's saved my life a couple of times when I've needed to do something like read 60,000 files quickly and didn't have time to figure out why the normal Haskell file access approaches were so slow.

Also Brian O'Sullivan's Attoparsec, which in my experience does perform much better than Parsec on things like large flat-file databases.

And now you can combine the two.

Conal Elliott's Vector-space packages up a lot of linear algebra functions very nicely, and also got me a little closer to feeling comfortable with type families.

Statistics (again by O'Sullivan) has been handy because I'd prefer to work in Haskell than in R.

HXT and Criterion aren't "hidden gems", but in my opinion they deserve to be more widely used.


Vector - fast arrays made easy (I don't like Data.Array). If I could only vote for one, this would be it right now.

Lazy Small Check (also see the paper) for exhaustive testing.

Cereal - all common data structures should have Binary and Serialize instances. Trust the compiler to drop dead code.

meldable-heap - Haven't gotten to use it yet, but this is an example of how software should be developed!

Chart - Its been useful for me when building charts for my paper and presentations.

Atom - I'd like an excuse to use it, but haven't had gotten one yet.


Some underappreciated, pragmatic libraries I use fairly often:

  • pcre-light (simple, fast regex matching)
  • mersenne-random-pure64 - fast, but pure, random numbers
  • xosd - X11 on screen display
  • ChasingBottoms - test properties for specifying laziness.
  • download-curl - simple, fast url download functions
  • gnuplot - gnuplot dsl
  • hscolour vs colorize-haskell
  • tagsoup - parsing html without thinking


I like the don't library:

main = don't $ do
   name <- getLine
   putStrLn $ "hello " ++ name


I forewarn that this is self-promotion, but I think that my package deserves more users than solely myself :)

So, timeplot is a tool for plotting time series from logs. It has quite a few features, see the extensive tutorial (lots of pics inside).

For example, you can use it to look at the effect of a heavyweight background process on 25%, 50% and 90% quantiles of your response times; or look at the number of users online throughout a day.

It is designed "in the Unix way": you take an arbitrary log and write a quick-and-dirty straightforward awk or perl script that transforms it into input for the program (consisting of "events": discrete value impulses, continuous value impulses and start/stop impulses).

It has been quite useful for me in analyzing log data, especially for diagnosing certain "infrastructural" performance problems: I look at plots of the system activity and I see what looks not the way it is supposed to look like.


I like interlude - for when those darn 'head: undefined' messages just won't go away!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜