ble*_*ddd 3 haskell boolean function permutation
我想要做的是创建一个给定一定长度的函数创建True/False的所有可能组合/排列
恩.getPerm 2应该回来[True,True,True,False,False,True,False,False]
getTrue 0 = []
getTrue size = (True:(getTrue (size-1)))++(True:(getFalse (size-1)))
getFalse 0 = []
getFalse size =(False:(getTrue (size-1)))++(False:(getFalse (size-1)))
getPerm 0 = []
getPerm size= (getTrue size)++(getFalse size)
Run Code Online (Sandbox Code Playgroud)
我无法做到正确..我对函数式编程很新,所以请只使用基本的东西,而不是奇怪的东西..尽可能简单的代码,因为我不知道很多关于haskell的事情
getPerm n = concat $ replicateM n [True, False]
Run Code Online (Sandbox Code Playgroud)
虽然它可能有资格作为"奇怪的事情",但它并不太难.[True, False]表示列表monad中的非确定性选择.replicateM做出n这些选择重复的不确定列表.由于您希望将它们全部放在一个列表中,因此我们将连接以获得最终结果.