Yesod ベースのサイト用に CRUD インターフェースを書いていますが、いくつかの値に問題があります。特に、次のような値で CRUD を試みています。
data Value = Value { valueId :: UUID
, otherStuff :: Stuff
}
Yesod と Aeson が提供するツールを使用してこれらの 1 つを作成する良い方法を見つけるのに苦労しています。私がフォームレットを使用したとき、遠い昔、フォームのモナド変換バージョンを使用して、次の行に沿って何かを行いました。
Value <$> (liftIO getUUID)
<*> textField Nothing
(私はおそらくフォームレットの構文を正確に理解していませんが、そこにいる Haskeller が要点を理解していることを願っています)。これには、UUID フィールドを含まないフォームと、IO アクションを実行してポストタイムにデータを作成するフォーム パーサーを作成するという効果がありました。
どうすればよいかわかりません。私は Aeson 構文解析で同じような考えを考えましたが、attoparsec (基礎となるパーサー) もモナド変換子ではありません。
中間データ表現以外のオプションを考えられる人はいますか?