2 ms·
Yesod is a very challenging project to build. I'm not a user of it so I can't speak from personal experience, but the common understanding seems to be that the
by tel 12y ago
Yesod is a very challenging project to build. I'm not a user of it so I can't speak from personal experience, but the common understanding seems to be that the particular constellation of Yesod packages together hover very close to unbuildable. They are also all together quite large and rely on a lot of compilation-time tricks (template haskell) which can increase build time.
I think it's unfortunate that Yesod gets billed as the premiere web framework for Haskell because it does require some extra work to get compiled.
In fact, the entire Stackage ("stable hackage") project, I believe, was originally developed in order to get some tooling which would allow Yesod to be consistently built. If you think you're going to be primarily using Yesod then I suggest you switch to Stackage [0]. Stackage prevents install issues by building the entire Stackage group together periodically to ensure that there are no build problems. The downside is that Stackage is partial and slow to track Hackage.
You may want to try Happstack: http://happstack.com/page/view-page-slug/9/happstack-lite-tutorial http://happstack.com/page/view-page-slug/9/happstack-lite-tu...
[0] http://www.haskell.org/haskellwiki/Stackage http://www.haskell.org/haskellwiki/Stackage
- dllthomas 12y ago"which can increase build time." Yeah, that's the biggest hit to my productivity, when working on a moderate sized Yesod project. Otherwise, the experience has been great.
- tel 12y agoIt should only be a significant problem when you edit modules with TH. I don't know how often that occurs within a Yesod project. I imagine you can accelerate builds by isolating the TH modules.
- dllthomas 12y agoWell, a good portion of meaningful additions touch at least one of config/routes and config/models, which means rebuilding a whole bunch. There probably is some way to better isolate things, but I'm not immediately sure what it looks like while still getting the DRY and static checks (which are certainly valuable!).