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