
I agree with vagif' explanation for "freedom". For most people, especially beginners, their criterion for a framework is like "how can I learn it easily, or to what extent does it fit my prior knowledge". According to this criterion, maybe Yesod is harder to learn because of its more features and less documentations, and harder to feel comfortable for its TH things. However, I don't think the above criterion is reasonable. To evaluate a framework, the main factors are: * How well and consistent is it designed? * How KISS(keep it simple and stupid) is it? * Does it scale well in large projects? I had used python/django to develop web projects before, it's very easy to learn and use. But to reduce your repetitive work, you need to write or use many utils like decorators and generic view. I really like the haskell language,so I try to use haskell as much as possible. From last year, I have learnt Happstack, Snap, and Yesod respectively, and compare their design and features. After reading most of the haskellers.com's code, I think its codes are very clean and elegant. So I chose Yesod among the three frameworks. I think Yesod's design is good, and safe url fits haskell's philosophy. As for the TH things, they are just the convenient way to reduce repetitive coding. As one said, "Every large projects to some extent implement a variant of Lisp." QQ is just the method provides by Yesod to attack repetitions, if you don't like it, you can bypass it. In a word, the existence of TH and QQ in Yesod is not that unreasonable. Although Yesod has the most features in the three, it's still in its childhood compared to something like django. As mentioned in one thread, I request the common "join" support in persistent. Yesod has much work to be done, especially documentations. Nevertheless, I think it's promising. On Tue, 2011-04-05 at 12:25 -0700, vagif.verdi@gmail.com wrote:
I think by "freedom" people often mean "how fast can i be comfortable in the framework to start running around and do things."