--
strlen :: String -> Int strlen [] = 0 strlen (x:xs) = 1 + strlen xs strlenA = length strlenB = sum . map (const 1) strlenC = foldr (+) 0 . map (const 1) factA 0 = 1 factA n = n * (factA (n-1)) factB n = product [1..n] ncopiesA :: Num a => a -> b -> [b] ncopiesA 0 x = [] ncopiesA n x = x : (ncopiesA (n-1) x) ncopiesB n x = map (const x) [1..n] ncopiesC n x = [ x | y <- [1..n] ] ncopiesD n x = take n (repeat x) powerA x 0 = 1 powerA x 1 = x powerA x n = x * (powerA x (n-1)) powerB x n = product (ncopiesA n x) str2int :: String -> Int str2int = sum . map (uncurry (*)) . explist . map (\ z -> z -(ord '0')) . map ord explist zs = zip zs [ powerA 10 x | x <- reverse [0 .. n-1] ] where n = length zs explistB = fst . foldr g ([],1) where z `g` (zs,n) = ((z,n) : zs, n * 10) ------------------------------------------------------------ --