diff --git a/ditto.cabal b/ditto.cabal
--- a/ditto.cabal
+++ b/ditto.cabal
@@ -1,5 +1,5 @@
 Name:          ditto
-Version:       0.1.2.0
+Version:       0.1.3.0
 Synopsis:      ditto is a type-safe HTML form generation and validation library
 Description:   ditto follows in the footsteps of formlets and
                digestive-functors <= 0.2. It provides a
diff --git a/src/Ditto/Generalized.hs b/src/Ditto/Generalized.hs
--- a/src/Ditto/Generalized.hs
+++ b/src/Ditto/Generalized.hs
@@ -90,3 +90,10 @@
   -> Form m input err view ()
 childErrors = G.childErrors
 
+-- | modify the view of a form based on its errors
+withErrors
+  :: Monad m
+  => (view -> [err] -> view)
+  -> Form m input err view a
+  -> Form m input err view a
+withErrors = G.withErrors
diff --git a/src/Ditto/Generalized/Internal.hs b/src/Ditto/Generalized/Internal.hs
--- a/src/Ditto/Generalized/Internal.hs
+++ b/src/Ditto/Generalized/Internal.hs
@@ -469,3 +469,21 @@
           }
         )
       )
+
+-- | modify the view of a form based on its errors
+withErrors
+  :: Monad m
+  => (view -> [err] -> view)
+  -> Form m input err view a
+  -> Form m input err view a
+withErrors f form = Form $ do
+  (View v, r) <- unForm form
+  range <- getFormRange
+  pure
+    ( View 
+        (\x -> 
+          let errs = retainChildErrors range x
+          in f (v x) errs
+        )
+    , r
+    )
diff --git a/src/Ditto/Generalized/Named.hs b/src/Ditto/Generalized/Named.hs
--- a/src/Ditto/Generalized/Named.hs
+++ b/src/Ditto/Generalized/Named.hs
@@ -98,3 +98,11 @@
   -> Form m input err view ()
 childErrors = G.childErrors
 
+-- | modify the view of a form based on its errors
+withErrors
+  :: Monad m
+  => (view -> [err] -> view)
+  -> Form m input err view a
+  -> Form m input err view a
+withErrors = G.withErrors
+
