Yesod web application dependencies

I have been experimenting with using Yesod to throw together a web application or two. My experience so far has been broadly positive—if you like computers to check things for you, I recommend it.1 That said, watching the full chain of dependencies fly past was moderately entertaining:2


An excellent parser-combinator library, widely imitated. This wouldn’t be funny, except…


Another excellent parser-combinator library, inspired by parsec.


This defines a bunch of Unicode aliases for standard functions with boring ASCII names. Why write:

x `elem` xs

when you could write:

x ∈ xs


utf8-light- and utf8-string-0.3.7

Two UTF-8 encoding libraries!


“In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.”

  1. assuming you like deciphering compiler error messages when the computer says no, that is []
  2. for a quiet Wednesday morning… []


#1 Steve Parston on 01.04.12 at 2:40 pm

What’s your point? A software package depends on other packages so what? I think that’s a good way to write software, better than inventing it yourself.

attoparsec: They used the best library for the job, and they found that this was the best in a particular case, over parsec. So what?

base-unicode-symbols: Obviously made for easier to read code in some part of the program.

utf8-*: Again, the clearly picked the best tool for two different jobs. One is quick, the over powerful.

semigroups-0.8: Yeah, we don’t want none of that there fancy book learning computer science stuff. Duuuurrrrr

#2 Will Thompson on 01.04.12 at 3:07 pm

I’m speechless.

I voluntarily write as much software as possible in Haskell. Why would I be afraid of “fancy book learning computer science stuff”?

#3 Steve Parston on 01.04.12 at 6:21 pm

Well then why are you mocking a library’s description for sounding technical?

#4 Will Thompson on 01.04.12 at 6:29 pm

I’m not mocking it.

#5 Steve Parston on 01.04.12 at 7:33 pm

You imply that it’s funny. You’ve written a list of funny (and you do use that word) dependencies.

You haven’t included the package description to be informative have you? Why have you included it?

#6 Will Thompson on 01.04.12 at 11:19 pm

I think it is funny (and delightful) that, by contrast to more mainstream web frameworks, Yesod depends on a module implementing semigroups. It is *precisely* because of things like this that I enjoy writing software in Haskell.

I think it is entertaining that Yesod depends on a library providing symbolic Unicode aliases for mathematical operators because that that library exists is funny (and I look forward to using it in my applications).

I think it is funny that a web framework implemented in a language sometimes derided for only being suitable for writing parser combinator libraries depends on not one, but two parser combinator libraries.

I think it is funny that a web framework implemented in a language historically derided for poor UTF-8 handling depends on two UTF-8 libraries.

Obviously we find different things entertaining.