fork download
  1. import Control.Applicative
  2. import Control.Monad (guard)
  3. import Control.Arrow
  4. import Data.List (unfoldr)
  5.  
  6. . unfoldr ( runKleisli (returnA &&& Kleisli (\x ->
  7. x`div`2 <$ guard(even x)
  8. <|> x*3 + 1 <$ guard( x/=1 )
  9. )))
  10.  
  11. main = print $ g 201
Success #stdin #stdout 0s 5728KB
stdin
Standard input is empty
stdout
4088