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

parsec-3.1.2

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

attoparsec-0.10.1.0

Another excellent parser-combinator library, inspired by parsec.

base-unicode-symbols-0.2.2.3

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

Invaluable!

utf8-light-0.4.0.1 and utf8-string-0.3.7

Two UTF-8 encoding libraries!

semigroups-0.8

“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… []

6 Replies to “Yesod web application dependencies”

  1. 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. 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?

  3. 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.

Comments are closed.