Scotty   イントロ

ホーム


Stack のインストール

macOS


$ curl -sSL https://get.haskellstack.org/ | sh
    

Windows

下記サイトよりインストーラーをダウンロード

Get Started with Haskell Windows

Linux


$ wget -qO- https://get.haskellstack.org/ | sh
    

詳しくは下記サイトを参照

Get started with Haskell

プロジェクトの作成

よりシンプルな形にするために、プロジェクトを手動で作成します。


$ mkdir scotty-web
$ cd scotty-web
$ mkdir src
    

Cabal ファイルの作成

「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
    

Main.hs の作成

「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!」をページに表示します。


3089 visits
Posted: Feb. 18, 2019
Update: Feb. 28, 2019

ホーム   ページトップ