<commit_before>A next generation web framework using the Haskell programming language, 
featuring:

  * safety & security guaranteed at compile time
  * performance
    * fast, compiled code
    * a greater concurrent load than any other web application server
  * developer productivity: tools for all your basic web development 
    needs

## Learn more: http://yesodweb.com/

## Installation: http://www.yesodweb.com/page/five-minutes

## Create a new project after installing

    yesod init


## Installing the latest development version from github

Yesod is built upon many smaller packages, all of which can be installed 
with:

~~~ { .bash }
cabal update

for repo in hamlet persistent wai yesod; do
  git clone http://github.com/yesodweb/$repo
  (
    cd $repo
    git submodule update --init
    ./scripts/install
  )
done
~~~<commit_msg>mention virthualenv for development version<commit_after>A next generation web framework using the Haskell programming language, 
featuring:

  * safety & security guaranteed at compile time
  * performance
    * fast, compiled code
    * a greater concurrent load than any other web application server
  * developer productivity: tools for all your basic web development 
    needs

## Learn more: http://yesodweb.com/

## Installation: http://www.yesodweb.com/page/five-minutes

    cabal update && cabal install yesod

## Create a new project after installing

    yesod init


## Installing the latest development version from github

If you are concerned about mucking with your installed packages, you might try using the new [virthualenv](http://hackage.haskell.org/package/virthualenv) tool to isolate a custom yesod build to a particular application.

Yesod is broken up into 4 separate repos and built upon many smaller packages.
All of them can be installed with the below command.

~~~ { .bash }
cabal update

for repo in hamlet persistent wai yesod; do
  git clone http://github.com/yesodweb/$repo
  (
    cd $repo
    git submodule update --init
    ./scripts/install
  )
done
~~~
{'fraction_non_alphanumeric': 0.06901615271659324, 'fraction_numerical': 0.0004894762604013706, 'mean_word_length': 3.677345537757437, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1131607', 'n_tokens_mistral': 568, 'n_tokens_neox': 535, 'n_words': 241}