gpt4 book ai didi

scheme - Dr Racket 的 MiniKanren 支持

转载 作者:行者123 更新时间:2023-12-04 16:57:52 25 4
gpt4 key购买 nike

我从《The Reasoned Schemer - 第二版》这本书和 DrRacket 方案环境开始学习 miniKanren。

我安装了“faster-minikanren”包,但书中的第一个例子使用命令run* (例如, (run* q #f) )产生错误消息,例如 run*: bad syntax in: (run* q #f) .

这是否意味着“faster-minikanren”包没有提供 minikanren 的正确定义?还是我做错了?

最佳答案

the 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))
'()
>

关于scheme - Dr Racket 的 MiniKanren 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com