给定一个列表lst
和一个数字n
,以下代码将输出一个列表,其中n
包含来自给定列表的不同元素lst
。
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 代码?