ネタ記録庫/Haskell

StateT †

これは、permutationを返す関数:

permutation' :: [[Int]] -> Int -> [Int] -> [[Int]]
permutation' result 0 _ = result
permutation' result n cand =
    do a <- cand
       permutation' (map (a:) result) (n-1) [x|x<-cand,x/=a]

使い方

permutation' [[]] [1,2,3] 2

のように使う。

これをStateTを使ってわざと分かりにくくしてみる:

permutation :: [[Int]] -> Int -> StateT [Int] [] [[Int]]
permutation result 0 = return result
permutation result n =
    do cand <- get
       a <- lift cand
       put [x|x<-cand,x/=a]
       permutation (map (a:) result) (n-1) 

これは

runStateT (permutation [[]] 2) [1,2,3]

のように使う。

  • Thx. 勉強になります。 -- げんま? 2007-04-24 (火) 12:45:05
  • 使い方は、permutation' [[]] 2 [1,2,3] -- 2008-07-10 (木) 22:43:25
  • ではないでしょうか? <-元職業プログラマ -- 2008-07-10 (木) 22:46:11

HaskellでWIKI &dagger;

書いてみました。いまのところ日本語は使えません。 http://icecs.ice.nuie.nagoya-u.ac.jp/~h043078b/wiki.cgi

History of Haskell &dagger;

HaskellでOS。 &dagger;

http://www.cse.ogi.edu/~hallgren/House/ -- 源馬? 2006-07-04 (火) 16:16:05

The Evolution of a Haskell Programmer &dagger;

The Evolution of a Haskell Programmer かなりハイレベルにバカやってる感じ

  • バカだ〜!fold関数使うまではわかるけど、その後が!まだまだまだまだ続くし。 -- げんま? 2006-08-12 (土) 10:35:43
  • インタプリタを作って階乗計算させたり,型クラスを使ったテクニックなんかもあるので分かると結構良いかも。 -- けいご? 2006-08-12 (土) 15:27:52
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS