【发布时间】:2014-12-14 00:46:36
【问题描述】:
我正在为从 k 值的选择中提取的 n 个元素重复排列编写代码。所以我的结果集的基数应该有 k^n 个元素。在 Haskell 中,这相当容易。例如,可以只写:
导入 Control.Monad (replicateM)
main = mapM_ print (replicateM 2 [1,2,3])
然后你会得到一个列表:
[1,1] [1,2] [1,3] [2,1] [2,2] [2,3] [3,1] [3,2] [3,3]
但在标准 ML 上,我不知道该怎么做。
我试过了:
fun 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 代码?
感谢任何帮助!
【问题讨论】:
标签: algorithm haskell permutation sml