Как говорится в файле readme , вам нужно поместить (require minikanren)
в исходный файл Racket.
Я вставил во вторую строку, после #lang racket
, скопировал определение appendo
,
#lang racket
(require minikanren)
(define (appendo l s out)
(conde
[(== l '()) (== s out)]
[(fresh (a d res)
(== `(,a . ,d) l)
(== `(,a . ,res) out)
(appendo d s res))]))
, затем нажал «Выполнить» и попробовал это в командной строке.:
> (run* (q r) (appendo q r '(1 2 3 4 5)))
'((() (1 2 3 4 5))
((1) (2 3 4 5))
((1 2) (3 4 5))
((1 2 3) (4 5))
((1 2 3 4) (5))
((1 2 3 4 5) ()))
>
Кажется, работает.Это не:
> (run* q #f)
. run*: bad syntax in: (run* q #f)
> (run* (q) #f)
application: not a procedure;
expected a procedure that can be applied to arguments
given: #f
arguments...:
, но это было:
> (run* (q) (lambda (_) #f))
'()
>