【发布时间】:2018-02-04 06:52:40
【问题描述】:
我正在尝试打印从以下幂集函数创建的列表的大小
fun add x ys = x :: ys;
fun powerset ([]) = [[]]
| powerset (x::xr) = powerset xr @ map (add x) (powerset xr) ;
val it = [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]] : int list list;
我有列表大小功能
fun size xs = (foldr op+ 0 o map (fn x => 1)) xs;
我无法合并这两个函数并得到类似的结果
我需要这样的东西:
[(0,[]),(1,[3]),(1,[2]),(2,[2,3]),(1,[1]),(2,[1,3]),(2,[1,2]),(3,[1,2,3])]
有人可以帮我解决这个问题吗?
【问题讨论】:
-
您对
powerset的定义毫无意义。在一个子句中,您使用了名称powerset,然后在下一行中,您似乎改变了主意并想将其命名为subsets1。它是哪一个?您是要定义一个名为powerset的函数还是要定义subsets1?如果subsets1已经被定义——它的代码是什么? -
感谢 John 注意到它,它是一个 poweset 函数而不是子集 1
标签: functional-programming sml smlnj ml powerset