Validate International Securities Identification Number: Difference between revisions

m
→‎{{header|Haskell}}: (edited out a duplication)
m (→‎{{header|Haskell}}: (combined some type signatures))
m (→‎{{header|Haskell}}: (edited out a duplication))
Line 920:
Or, making alternative choices from standard libraries:
<lang haskell>import qualified Data.Map as M
import Control.Monad (sequence, liftM2)
import Data.Maybe (fromMaybe)
 
isinValidvalidISIN, isinPattern, luhn :: String -> Bool
validISIN = liftM2 (&&) isinPattern (luhn . (show =<<) . stringInts)
isinValid isin = isinPattern isin && luhn (asNumericString isin)
 
isinPattern isin =
Line 938:
fmap (uncurry (+) . (`quotRem` 10)) .
zipWith id (cycle [id, (2 *)]) . stringInts . reverse
 
asNumericString :: String -> String
asNumericString =
(show =<<) . fromMaybe [] . sequence . fmap (`M.lookup` charMap)
 
capitals, digits :: String
Line 957 ⟶ 953:
main =
mapM_
(print . ((,) <*> isinValidvalidISIN))
[ "US0378331005"
, "US0373831005"
9,655

edits