[Haskell-cafe] generalized shuffle