【数学者】Haskellはクソ言語【オナニー】at TECH
【数学者】Haskellはクソ言語【オナニー】 - 暇つぶし2ch468:デフォルトの名無しさん
07/01/13 17:10:31
>>465
>>467の人のようにこういう操作はArrayの方が得意だけど無理矢理やってみた
手抜きして右からまわしてる

import Random

-- main = print [1,2,3] >> hogeIO [1,2,3] >>= print

hogeIO :: [a] -> IO [a]
hogeIO xs = getStdRandom (hoge xs)

hoge :: (RandomGen g) => [a] -> g -> ([a], g)
hoge xs g = foldr iter ([],g) xs
  where
  iter x (xs,g) = (x':xs', g')
    where
    ((x', _:xs'), g') = replaceR x (x:xs) g

replaceR :: (RandomGen g) => a -> [a] -> g -> ((a, [a]), g)
replaceR x xs g = (replace i x xs, g')
  where
  (i,g') = randomR (0, length xs - 1) g

replace :: Int -> a -> [a] -> (a,[a])
replace n x xs = (z, ys ++ x:zs)
  where
  (ys, z:zs) = splitAt n xs


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch