--
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) ------------------------------------------------------------ -- 

AltStyle によって変換されたページ (->オリジナル) /