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

Version Path
trackler-2.2.1.159 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.158 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.157 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.156 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.155 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.154 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.153 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.152 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.151 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.150 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.149 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.148 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.147 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.146 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.145 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.144 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.143 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.142 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.141 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.140 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs