[Haskell-cafe] Functions that return functions

Jake McArthur jake.mcarthur at gmail.com
Sun Apr 12 17:45:28 EDT 2009


michael rice wrote:
> Admittedly, functions that return functions are Lispy, but perhaps there 
> a Haskelly way to accomplish the same thing?

Actually, I think you will come to find that this way of thinking is 
more Haskelly than it is Lispy!

     import Control.Applicative ((<$), (<*>))
     import Control.Arrow       ((&&&))
     import Control.Monad       (guard)
     import Data.List           (unfoldr)

     makeVerifier f m = (==0) . (`mod` m) . sum . zipWith f [1..] . 
unfoldr nextDigit
         where nextDigit = (<$) . (snd &&& fst) . (`divMod` 10) <*> 
guard . (/= 0)

- Jake


More information about the Haskell-Cafe mailing list