This also seems to work: myprod l = prod l id where prod [] k = k 1 prod (x:xs) k = if x == 0 then 0 else prod xs (\ z -> k (x * z)) *Main Data.List> :load prod [1 of 1] Compiling Main ( prod.hs, interpreted ) Ok, modules loaded: Main. *Main Data.List> myprod [1,2,3,4,5,0,6,7,8,9] 0 *Main Data.List> myprod [1,2,3,4,5] 120 *Main Data.List> myprod [0..] 0 *Main Data.List> Michael --- On Mon, 4/20/09, Tillmann Rendel <rendel@cs.au.dk> wrote:
|