Did you time the runs?

Non-lazy D version, compiled as -O -inline -release, and ran with pick(6, 11):

real    0m8.587s
user    0m8.497s
sys    0m0.012s


Lazy D version, compiled as -O -inline -release, and ran with pick(6, 11):

real    0m4.195s
user    0m4.168s
sys    0m0.008s


Haskell version, compiled as -O2, and ran with pick(6, 11):

real    0m0.159s
user    0m0.116s
sys    0m0.028s