|
|
@ -6,11 +6,10 @@
|
|
|
|
;; Class used to define a problem and retrieve solutions
|
|
|
|
;; Class used to define a problem and retrieve solutions
|
|
|
|
|
|
|
|
|
|
|
|
(class/c [reset (->m void?)]
|
|
|
|
(class/c [reset (->m void?)]
|
|
|
|
;; todo: tighten `object?` contracts
|
|
|
|
|
|
|
|
[setSolver (Solver? . ->m . void?)]
|
|
|
|
[setSolver (Solver? . ->m . void?)]
|
|
|
|
[getSolver (->m Solver?)]
|
|
|
|
[getSolver (->m Solver?)]
|
|
|
|
;; todo: tighten `object?` contract
|
|
|
|
;; todo: tighten `object?` contract
|
|
|
|
[addVariable (any/c (or/c list? object?) . ->m . void?)]
|
|
|
|
[addVariable (any/c (or/c list? Domain?) . ->m . void?)]
|
|
|
|
[getSolutions (->m list?)])
|
|
|
|
[getSolutions (->m list?)])
|
|
|
|
(class* object% (printable<%>)
|
|
|
|
(class* object% (printable<%>)
|
|
|
|
(super-new)
|
|
|
|
(super-new)
|
|
|
@ -45,8 +44,7 @@
|
|
|
|
(error 'addVariable (format "Tried to insert duplicated variable ~a" variable)))
|
|
|
|
(error 'addVariable (format "Tried to insert duplicated variable ~a" variable)))
|
|
|
|
(cond
|
|
|
|
(cond
|
|
|
|
[(list? domain) (set! domain (new Domain [set domain]))]
|
|
|
|
[(list? domain) (set! domain (new Domain [set domain]))]
|
|
|
|
;; todo: test for `instance-of-Domain?` ; how to copy domain?
|
|
|
|
[(Domain? domain) (set! domain (send domain copy))]
|
|
|
|
[(object? domain) (set! domain '(copy.copy domain))]
|
|
|
|
|
|
|
|
[else (error 'addVariable "Domains must be instances of subclasses of Domain")])
|
|
|
|
[else (error 'addVariable "Domains must be instances of subclasses of Domain")])
|
|
|
|
(when (not (object? domain)) (error 'fudge))
|
|
|
|
(when (not (object? domain)) (error 'fudge))
|
|
|
|
(when (not domain) ; todo: check this test
|
|
|
|
(when (not domain) ; todo: check this test
|
|
|
|