将Applicative Form迁移到Monadic - 获取当前时间戳

时间:2013-04-25 18:36:45

标签: forms haskell yesod

我有一个有效的应用表单,但我想添加一个与我的模型中的任何字段都不对应的textField。除了一个领域外,一切都正常。我的模型的一部分是UTCTime值,表示上传的时间戳。使用申请表格,我有以下代码:

-- some stuff
<*> aformM (liftIO getCurrentTime)
-- more stuff

我似乎无法找到与monadic表单相同的aformM。我尝试了以下方法:

(timeRes, timeView) <- mformM (liftIO getCurrentTime)

希望monadic表单有一个等效函数,类似于我们如何使用areq / mreq,aopt / mopt等,但是我的代码不能编译。所以,我的问题是:有没有办法使用monadic表单获取当前时间戳?

1 个答案:

答案 0 :(得分:2)

通常不需要显示更新时间戳,因此在MForm monad中,您只需选择值并将其添加到应用结果中。

   currentTime <- liftIO getCurrentTime

   (field1_Res, field1_View) <- mreq ...

   let  myRecord_Res = MyRecord <$> pure currentTime <*> field1_Res <*> field2_Res <*> ...