macOS
$ curl -sSL https://get.haskellstack.org/ | sh
Windows
下記サイトよりインストーラーをダウンロード
Get Started with Haskell WindowsLinux
$ wget -qO- https://get.haskellstack.org/ | sh
詳しくは下記サイトを参照
Get started with Haskellよりシンプルな形にするために、プロジェクトを手動で作成します。
$ mkdir scotty-web
$ cd scotty-web
$ mkdir src
「scotty-web」プロジェクト内に、次の内容の「scotty-web.cabal」という ファイルを作ります。
name: scotty-web
version: 0.1.0.0
category: Web
build-type: Simple
cabal-version: >=1.10
executable scotty-web
main-is: Main.hs
build-depends: base >=4.9 && <4.10
, scotty
hs-source-dirs: src
default-language: Haskell2010
「scotty-web」プロジェクト内の「src
」ディレクトリ内に、
次の内容の「Main.hs
」というファイルを作ります。
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
main :: IO ()
main = scotty 3000 $ do
get "/" $
html "Hello World!"
ビルド
$ stack init
$ stack build
初回のビルドは「Scotty」の開発環境と実行環境をインストールするため、 非常に時間がかかります。2回目からのビルドはすぐに終わります。 「stack init」は、初回の1回だけで構いません。
実行
$ stack exec scotty-web
Setting phasers to stun... (port 3000) (ctrl-c to quit)
ブラウザを起動して「https://localhost:3000/
」へアクセスすると、次のように表示されます。
終了させるには、 ターミナルで、「Control」キー押しながら「c
」
を押します。
^C
{-# LANGUAGE OverloadedStrings #-}
Scottyでは、文字は、Text 型でないと表示できないみたいです。 この言語拡張を読み込むと、通常の "あいうえお"という文字列リテラルが、 自動的に Text 型に変換されるそうです。
import Web.Scotty
Scotty を使うために必要なほぼすべてのライブラリが入っている模様です。
main :: IO ()
「main」識別子は、空の「IO モナド」を返します。副作用だけを行う識別子です。
main = scotty 3000 $ do
scotty をポート 3000 番で実行するという意味だと思います。
get "/" $
"/" ルートを get した場合の振る舞いを指定しようとしています。
html "Hello World!"
"/" ルートを get した場合は、 「html」関数で「Hello World!」をページに表示します。