linear-maps-0.6: Data/Sequence/Profile.hs
module Data.Sequence.Profile
( prof1
, prof2
) where
import Data.Sequence hiding (take)
import Data.List
prof1 :: Int -> Int -> Int
prof1 a b
= sum $ toList $ foldl' (><) empty $ map fromList $ take a [take b [x..] | x<- [0::Int,10..]]
prof2 :: Int -> Int
prof2 n
= sum $ toList $ f n 0
where
f :: Int -> Int -> Seq Int
f 0 i = singleton i
f n' i = f (n'-1) i >< f (n'-1) (i+1)
toList :: Seq a -> [a]
toList s = case viewl s of
EmptyL -> []
a :< ss -> a: toList ss