在 miniKanren 中,succeed可以定义为(define succeed (== #t #t)),并且fail可以定义为(define fail (=== #t #f))。但是,和在The Reasoned Schemer中出现的#sand#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 中定义#sforsucceed和#ufor ?fail
我正在使用Scheme的规范 miniKanren 实现和 Racket的规范 miniKanren 实现。