I’ve recently started trying to learn Haskell, just for the fun of it and i thought i’d try solving a couple of small real-world problems to get my feet wet.
So here is a Greek VAT validator in Haskell:
afmValidate :: String -> Bool afmValidate x | length x /= 9 = False | checkDigit == (last n) = True | otherwise = False where n = List.map (\z -> read [ z ] :: Integer) x checkDigit = (sum (zipWith (\x y-> x * (2^y) ) (reverse $ init n) [1..8]) ) `mod` 11 `mod` 10
Supposedly people use single letter variable names in Haskell routinely. I’m guessing because most functions are very very small and simple and look like mathematics more than code. I feel like a filthy whore for doing that and i’m not sure where to strike a balance between single letter variables and long-descriptive variables.