F#のWebアプリケーションフレームワーク

http://fsharp.org/guides/web/ に載ってる中でちょっと気になったやつをメモ。

Suave.IOはノンブロッキングクロスプラットフォーム。ほうほう。結構作りこまれてる様子。 http://suave.io/

type SuaveTask<'a> = Async<'a option>
type WebPart = HttpContext -> SuaveTask<HttpContext>
open Suave
open Suave.Http
open Suave.Http.Applicatives
open Suave.Http.Successful
open Suave.Web

let app =
  choose
    [ GET >>= choose
        [ path "/hello" >>= OK "Hello GET"
          path "/goodbye" >>= OK "Good bye GET" ]
      POST >>= choose
        [ path "/hello" >>= OK "Hello POST"
          path "/goodbye" >>= OK "Good bye POST" ] ]

startWebServer defaultConfig app

Freyaはステートマシン。シンプルっぽい。 https://github.com/freya-fs/freya

type Freya<'a> = FreyaState -> Async<'a * FreyaState>
let double x =
    freya {
        return x * 2 }