Skip to content

Instantly share code, notes, and snippets.

@jabaraster
Last active September 26, 2016 07:07
Show Gist options
  • Save jabaraster/ffc6de50d6e76e8d695bc0bd00f51af8 to your computer and use it in GitHub Desktop.
Save jabaraster/ffc6de50d6e76e8d695bc0bd00f51af8 to your computer and use it in GitHub Desktop.

React.js時代のYesodアプリの姿

チートシート


Handler関数の戻り値

getHogeR :: Handler Hoge

この場合、Hoge型が次の3つのclassのinstanceである必要があります。

  • ToContent
  • ToTypedContent
  • Data.Aeson.ToJSON

リクエストをJSONで受ける

JSONで受けたい型がData.Aeson.FromJSONのinstanceである必要がある。 またプロパティの扱いに注意が必要。Maybeで包んでいないプロパティは、JSON中に必ず存在しなければならない。

data Input = Input {
    name :: Text
  , optionName :: Maybe Text
}

様々なinstance宣言をショートカットする

ToJSON/FromJSON/Lensのinstance宣言は面倒なもの。これをショートカットする方法がある。

data Hoge = Hoge {
    hogeAge :: Int
  , hogeName :: Maybe Text
}
-- Lensify
makeLenses ''Hoge
-- JSONify
$(deriveJSON defaultOptions {
    fieldLabelModifier = omittedFirstCharLower "_hoge"
} ''Hoge)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment