2007-06-17 順列 programming haskell 順列をリストモナドでどう書くのだろう,と,ふと思いたち書いてみた. remove _ [] = [] remove x (y:ys) = if x == y then ys else y : (remove x ys)perm _ [] = [[]] perm 1 l = do x <- l return [x] perm n l = do x <- l xs <- perm (n - 1) (remove x l) return (x:xs)