Sha256: 667b840db4817fe3ae5b5b4d9ab59793168c6ba043805e9c969fce647b6318d3
Contents?: true
Size: 475 Bytes
Versions: 229
Compression:
Stored size: 475 Bytes
Contents
module Luhn (isValid) where import Data.Char (digitToInt) luhnDouble :: Integral a => a -> a luhnDouble n | n < 5 = n * 2 | otherwise = n * 2 - 9 luhnDigits :: Integral a => [a] -> [a] luhnDigits = zipWith ($) (cycle [id, luhnDouble]) . reverse checksum :: Integral a => [a] -> a checksum = (`rem` 10) . sum . luhnDigits isValid :: String -> Bool isValid s = length digits > 1 && checksum digits == 0 where digits = map digitToInt $ filter (/= ' ') s
Version data entries
229 entries across 229 versions & 1 rubygems