因此,我正在与DrRacket合作,因为我正在通过#lang scribble
为我的程序制作手册,所以我希望使用{{1}来运行我的程序的实际示例到目前为止,我已经有了这个部分:
@interactions
当我做的时候
#lang scribble/manual
@(require (for-label racket))
@(require scribble/eval racket/sandbox)
@(define my-evaluator
(parameterize ([sandbox-output 'string]
[sandbox-error-output 'string])
(make-evaluator 'racket/base '(define (f) later) '(define later 5))))
然后我运行@interaction[#:eval my-evaluator]{
@(f)
}
它正确呈现为:
scribble --htmls ++main-xref-in manual.scrbl
有没有办法使用我的所有definitios(在不同的文件中)来评估使用scribble?我尝试更改第7行:
> (f)
5
但是当我尝试渲染它时,它会抛出这样的东西:
(make-evaluator 'racket/base '(define (f) later) '(define later 5) #:require "mydefs.rkt")))
我不想复制粘贴我的定义make-evaluator: bad requires: "mydefs.rkt"
部分(他们很多!)任何修复?谢谢racketeers!
答案 0 :(得分:0)
asumu #racket帮我解决了这个问题。 我所需要的只是做到这一点:
@(define my-evaluator
(parameterize ([sandbox-output 'string]
[sandbox-error-output 'string])
(make-base-eval #:lang 'racket '(define (f) later)
'(define later 5)
'(require "../man/manager.rkt"))))
请注意,我只是引用了require语句,而不是使用关键字。
使用
@interaction[#:eval my-evaluator]{
@(define man (new manager%))@(send man crear-nodo '9)
}
完美呈现。
谢谢!