疯狂道具 Mad props是一个简单的广义传播器框架。 这意味着它非常擅长表达和解决广义。 请注意, mad-props并未使用晶格过滤器进行传播,也不支持传播器元素的动态选择(尽管您可以通过选择的容器类型指定选择顺序)。 这些事情更加复杂。 还有很多其他的约束求解器,可能大多数都比这个约束求解器快,但是对于那些喜欢在Haskell工作的舒适性和类型安全性的人来说,我已经了解了。 使用其他约束求解器来表达您的问题可能会有些麻烦。 您需要将问题压缩到布尔变量之间的关系,或者尝试将问题塞入特定格式。 Mad Props使用Monadic DSL来表达问题中的变量以及变量之间的关系,这意味着您可以使用普通的Haskell来表达问题。 它仍未完成,正在经历快速的迭代和试验,因此我不会在此基础上进行任何大型项目。 示例:数独 我们将使用Propagators编写一个快速的Sudoku求解器