In case it wasn't obvious, I thought I should mention that Kabanov and Vene's dynamorphisms which optimize histomorphisms for dynamic programming can be expressed readily as chronomorphisms; they just use an anamorphism instead of a futumorphism.

```
-- | dynamorphism
dyna :: Functor f =>
(f (Cofree f b) -> b) ->
(a -> f a) ->
(a -> b)
dyna f g = extract . dyna' f g

-- | dynamorphism kernel
dyna' :: Functor f =>
(f (Cofree f b) -> b) ->
(a -> f a) ->
(a -> Cofree f b)
--dyna' f g = hylo (Cofree . (f &&& id)) g
dyna' f g = chrono' f (fmap return . g) . return

-- | generalized dynamorphism
g_dyna :: (Functor f, Functor h) =>
(forall b. f (h b) -> h (f b)) ->
(f (Cofree h b) -> b) ->
(a -> f a) ->
(a -> b)
g_dyna k f g = extract . g_dyna' k f g

-- | generalized dynamorphism kernel
g_dyna' :: (Functor f, Functor h) =>
(forall b. f (h b) -> h (f b)) ->
(f (Cofree h b) -> b) ->
(a -> f a) ->
(a -> Cofree h b)
g_dyna' k f g = g_chrono' k id f (fmap return . g) . return
```

Moreover, as an interesting aside, since one side is an anamorphism, there is no power to be gained for a dynamorphism by introducing a natural transformation term, even though dynamorphism is a form of chronomorphism, because 'eta' can be folded into the anamorphism side of the chronomorphism, as you do with a normal hylomorphism.

Source Code