在 miniKanren 中,succeed
可以定义为(define succeed (== #t #t))
,并且fail
可以定义为(define fail (=== #t #f))
。但是,和在The Reasoned Schemer中出现的#s
and#u
的简写形式succeed
又如何呢?fail
(define #s succeed)
在球拍中产生错误:
Welcome to Racket v7.2.
> (require Racket-miniKanren/miniKanren/mk)
> (define #s succeed)
; readline-input:2:8: read-syntax: expected `(`, `[`, or `{` after `#s` [,bt
; for context]
#<procedure:...iniKanren/mk.rkt:337:4>
; readline-input:2:18: read-syntax: unexpected `)` [,bt for context]
我觉得这与阅读器宏有关。
如何在 Scheme 和 Racket 中定义#s
forsucceed
和#u
for ?fail
我正在使用Scheme的规范 miniKanren 实现和 Racket的规范 miniKanren 实现。