1

リストlstと数値を指定すると、次のコードは、指定されたリストとは異なる要素をn持つリストを出力します。nlst

rndsel :: (Eq a, RandomGen g) => [a] -> g -> Int -> [a]
rndsel lst _ 0 = []
rndsel lst g n = schar:(rndsel rem g (n-1))
  where schar = lst !! index
        index = head $ randomRs (0, ll-1) g
        ll = length lst
        rem = delete schar lst

読みやすさ、雄弁さの点でこのコードを改善できる方法があるかどうか、またより慣用的な Haskell コードにすることができるかどうかを知りたいです。

4

1 に答える 1