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