ClojureDocs

命名空间

clojure.core.logic.fd

clojure.core.logic.fd 中的变量

*^%

!=
有限域约束。u 和 v 不能相等。如果 u 和 v 是变量,则最终必须给它们指定域。
!=c
无文档
*
用于乘法和除法的有限域约束。如果 x、y 和 product 是变量,则最终必须给它们指定域。
*c
无文档
+
用于加法和减法的有限域约束。如果 x、y 和 sum 是变量,则最终必须给它们指定域。
+c
无文档
-
无文档
->fd
无文档
->FiniteDomain
类 clojure.core.logic.fd.FiniteDomain 的位置工厂函数。
->IntervalFD
类 clojure.core.logic.fd.IntervalFD 的位置工厂函数。
->MultiIntervalFD
类 clojure.core.logic.fd.MultiIntervalFD 的位置工厂函数。
-difference
无文档
-disjoint?
无文档
-distinct
无文档
-distinctc
真正的 *独立* distinct 约束。x 是一个现在绑定到单个值的变量。y* 是在约束构建时存在的非单例绑定变量。n* 是在约束构建时存在的单例域值集合。我们使用 categorize 来确定当前的非单例绑定变量和单例值。如果 x 在 n* 或新的单例中,则我们失败了。如果不是,我们只需从绑定到变量的剩余非单例域中删除 x 的值。
-domc
无文档
-drop-before
无文档
-drop-one
无文档
-intersection
无文档
-intervals
无文档
-keep-before
无文档
-lb
无文档
-member?
无文档
-ub
无文档
<
有限域约束。u 必须小于 v。如果 u 和 v 是变量,则最终必须给它们指定域。
<=
有限域约束。u 必须小于或等于 v。如果 u 和 v 是变量,则最终必须给它们指定域。
<=c
无文档
==
有限域约束。u 和 v 必须相等。如果 u 和 v 是变量,则最终必须给它们指定域。
==c
无文档
>
有限域约束。u 必须大于 v。如果 u 和 v 是变量,则最终必须给它们指定域。
>=
有限域约束。u 必须大于或等于 v。如果 u 和 v 是变量,则最终必须给它们指定域。

b

binops
无文档
binops->fd
无文档
bounded-listo
确保列表 l 的长度永远不会超过边界 n。必须已为 n 分配域。
bounds
无文档

d

difference*
无文档
disjoint?*
无文档
distinct
一个有限域约束,它将保证出现在 v* 中的所有变量都将与唯一值统一。v* 不需要是接地的。v* 中的任何变量最终都应该被赋予一个域。
distinctc
真正的 distinct 约束。v* 可以是逻辑变量和值的序列,也可以是逻辑变量本身。此约束在 v* 接地之前不会运行。当它接地后,我们将 v* 分组为一组逻辑变量和一组已排序的已知单例值。然后,我们为每个变量构造单独的约束。
dom
为变量 x 分配一个域。
domain
构造要分配给变量的域。参数应该是按排序顺序给出的整数。当只有几个可能的值时,域可能比区间更有效。
domc
无文档

e

eq
无文档
eq*
无文档
eq-form
无文档
expand
无文档
ext-dom-fd
无文档
extend-to-fd
无文档

f

g

get-dom
无文档

i

IInterval
无文档
IIntervals
无文档
in
将变量分配给域。域必须放在最后。
intersection*
无文档
interval
构造要分配给变量的区间。当可能性范围很大时,区间可能比域类型更有效。
interval-<
无文档
interval-<=
无文档
interval->
无文档
interval->=
无文档
interval?
无文档
ISet
无文档
ISortedDomain
无文档

l

list-sorted?
无文档

m

map-sum
无文档

p

process-dom
如果 x 是变量,我们更新它的域。如果它是一个整数,我们检查它是否是给定域的成员。dom 则是新的域,它应该已经从之前的域 domp 计算出来。

q

quot
无文档

t

to-vals
无文档