fork(2) download
  1. import Data.List
  2.  
  3. data Tree a = Node a [Tree a] deriving Show
  4.  
  5. a :: Tree Double
  6. a = Node 1 [a]
  7.  
  8. flatten_a (Node x (n:_)) = x : flatten_a n
  9.  
  10. scan f a (Node x ns) = Node a' $ map (scan f a') ns where a' = f a x
  11.  
  12. main = print $ foldl' (+) 0 $ take 18000000 $ flatten_a $ scan (+) 0 a
Success #stdin #stdout 2.29s 6264KB
stdin
Standard input is empty
stdout
1.62000009e14