我正在尝试生成一个Seq
不允许连续重复的随机选项:
> (
((R F) (F U) (R F) (F R) (U R) (R F) (R F) (U F) (R U) (U R))
为什么grep
以这种方式使用会导致嵌套对?我怎样才能实现我正在寻找的东西?使用.flat
上面仍然允许连续重复。
( R U F U F U R F R U ... )
我怎样才能实现我正在寻找的东西?
我相信该squish
方法会做你想做的事:
say
这产生:
(U R F U F R F R F U F R U R F U R U R F)
为什么以这种方式使用 grep 会导致嵌套对?
因为grep
(map
也一样)在 arity 大于 1 的东西上将通过将列表分成该大小的块来工作。因此A B C D
,对grep
块的第一次调用得到A B
,第二次调用C D
,依此类推。然而,在这种情况下真正需要的是滞后值。可以使用state
传递给的块中的变量grep
来实现这一点,但是对于这个问题squish
是一个更简单的解决方案。