Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.29 KB | None | 0 0
  1. import Control.Monad.Cont
  2.  
  3. cataCps :: (Traversable f) => (f a -> a) -> Fix f -> a
  4. cataCps algebra expr = runCont (recur algebra expr) id
  5.  
  6. recur :: (Traversable f) => (f a -> a) -> Fix f -> Cont a a
  7. recur algebra (Fix expr) = do
  8. sub <- sequence $ fmap (recur algebra) expr
  9. return (algebra sub)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement