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.180 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.179 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.178 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.177 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.176 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.175 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.174 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.173 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.172 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.171 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.170 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.169 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.167 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.166 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.165 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.164 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.163 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.162 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.161 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs
trackler-2.2.1.160 tracks/haskell/exercises/luhn/examples/success-standard/src/Luhn.hs