a = [1,1,1,1] 
b = [0,1,2,3] 
d = [0,0,0,0] 

for i in b: 
  for j in c: 
    if (i+j)<3: 
      d[i+j] += a[i]  

My just work implementation in Haskell
http://hpaste.org/57452

Another people implementation in Haskell with Monad and it turns out complex and very imperatively.
http://hpaste.org/57358

Do you have any cool solution in FP way?

Thanks.
-Simon