YesodでHello World
Haskell Platformと依存パッケージのインストール
Mac OS X の場合
brew install haskell-platform
Ubuntuの場合
sudo apt-get -y install libedit-dev libbsd-dev libgmp3-dev zlib1g-dev freeglut3-dev haskell-platform
cabalのアップグレード
yesodをインストールする際に、cabalのサンドボックス機能を使用するため、cabalのバージョンが古い場合は、cabalをアップグレードする。
cabal update
cabal install cabal-install
Yesodのインストール
yesodは複雑な依存関係を持つため、cabal-hellを避けるために、必ずサンドボックス内にインストールするようにする。 一方、yesodと関連するライブラリのインストールにはかなり時間がかかるので、プロジェクトを新規作成する度に毎回サンドボックスを作ってライブラリをインストールしなおしていると効率が悪い。 そこで、yesod用のサンドボックスを作成し、そのサンドボックスを使いまわすようにする。
# Yesod用のディレクトリを作成する
mkdir YesodWork && pushd YesodWork
# Yesodをインストールするためのサンドボックスを作成する
mkdir .cabal-shared-sandbox && pushd .cabal-shared-sandbox
cabal sandbox init --sandbox .
# サンドボックスにYesodをインストールする
# -j オプションをつけると、インストール作業が並列化される
cabal install -j yesod-platform yesod-bin
# データベースとしてsqliteを使う場合、
# sqlite用の永続化ライブラリもインストールする
cabal install -j persistent-sqlite
popd
# Hello World用のディレクトリを作成し、
# サンドボックスに先ほど作成したディレクトリを指定する
mkdir HelloYesod && pushd HelloYesod
cabal sandbox init --sandbox ../.cabal-shared-sandbox
Hello Worldを表示するyesodプログラム
とりあえず、以下の内容をファイルに保存し、runhaskellコマンドでサーバを起動する。 ウェブブラウザでlocalhost:3000にアクセスすると、「Hello World!」と表示されるはずである。
ファイルの内容
{-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings #-}
import Yesod
data HelloWorld = HelloWorld
mkYesod "HelloWorld" [parseRoutes|
/ HomeR GET
|]
instance Yesod HelloWorld
getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]
main :: IO ()
main = warp 3000 HelloWorld
サーバの起動
cabal exec runhaskell hello-yesod.hs