2007-06-17から1日間の記事一覧

Main> perm 2 [1,2,3]

[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]なるほど簡単だ.追記: == を使ってるから Eq に属してないといけないんだよね,と話すとI井君がサクっと改良してくれた. 要するに n 番目の要素と,それを取り除いたリストをタプルで持っておけばいいわけです. re…

順列

順列をリストモナドでどう書くのだろう,と,ふと思いたち書いてみた. 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 …