From what you've said, it sounds like you can already write:serverSide :: IO a -> Form aThis seems elegant enough to me for your needs. Just encourage it as an idiom specific to Forms.myBlogForm = Blog <$> titleForm <*> serverSide getCurrentTime <*> contentsFormCould you abstract `serverSide` out into a typeclass, such as ApplicativeIO? Sure. but why bother? The point is, you've got the specialization you need already.