2
我正在为从k值选择中绘制的n个元素重复排列编写代码。所以我的结果集的基数应该有k^n个元素。在Haskell中,这相当简单。例如,我们可以这样写:将Haskell代码转换为标准ML(与重复组合)
进口Control.Monad(replicateM)
主要= mapM_打印(replicateM 2 [1,2,3])
那么你会得到列表如下:
[1,1] [1,2] [1,3] [2,1] [2,2] [2,3] [3,1] [3,2] [3 ,3]
但在标准ML上,我不知道该怎么做。
我尝试这样做:
乐趣combs_with_rep(K,XXS)=
case (k, xxs) of (0,_) => [[]] |(_, []) => [] |(k, x::xs) =>List.map (fn ys => x::ys) (combs_with_rep((k-1),xxs))@ combs_with_rep(k,xs)
不过这个名单是不完整的,我不知道为什么....
Haskell中有没有模拟编码做同样的事情?或者我应该如何解决我的sml代码?
任何帮助表示赞赏!