■
http://d.hatena.ne.jp/mzp/20070428/coinのネタ。SICPを流し読みしてたら出てきたので。
coins :: Int -> [Int] -> [(Int, Int)] coins sum coins = zip coins $ snd $ foldr f (sum,[]) coins where f a (n,b) = (n `rem` a , (n `div` a):b)
Main> coins 13734 [1,5,10,50,100,500,1000,2000]
[(1,4),(5,0),(10,3),(50,0),(100,2),(500,1),(1000,1),(2000,6)]
Main>