Skip to content

Instantly share code, notes, and snippets.

@andyarvanitis
Created February 26, 2015 04:35
Show Gist options
  • Select an option

  • Save andyarvanitis/d289bc7419ada426d2d3 to your computer and use it in GitHub Desktop.

Select an option

Save andyarvanitis/d289bc7419ada426d2d3 to your computer and use it in GitHub Desktop.
import Data.Foldable
-- perform a very large foldr to test tail recursion
addAll :: (Foldable t, Num a) => t a -> a
addAll = Data.Foldable.foldr (+) 0
n :: Integer
n = 1500000
numbersList :: [Integer]
numbersList = numbersList' n []
where
numbersList' :: Integer -> [Integer] -> [Integer]
numbersList' 0 xs = xs
numbersList' k xs = numbersList' (k - 1) (fromInteger k : xs)
-- numbersVect :: Vect (length numbersList) Integer
-- numbersVect = fromList numbersList
main :: IO ()
main = do
putStrLn . show . addAll $ numbersList -- numbersVect
-- putStrLn . show . addAll $ numbersList -- numbersList
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment