0

DrRacket과 협력 중이므로 내 프로 시저에 대한 #lang scribble을 통해 설명서를 작성하고 있으므로 @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 제대로으로 렌더링 :

> (f) 
5 

다른 파일에있는 모든 definitios를 사용하여 낙서로 평가할 수 있습니까? 나는에 대한 선 (7)을 변경 시도했다 :

(make-evaluator 'racket/base '(define (f) later) '(define later 5) #:require "mydefs.rkt"))) 

하지만 그것을 렌더링 할 때,이 같은 던졌습니다 :

make-evaluator: bad requires: "mydefs.rkt" 

나는 내 정의를 붙여 복사하지 않으을 make-evaluator 부분 (그들은 많이!) 수정? 너 한테 고마워!

답변

0

asumu (IRC#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")))) 

참고 문을 필요로한다. 사용

@interaction[#:eval my-evaluator]{ 
            @(define man (new manager%))@(send man crear-nodo '9) 
            } 

완벽하게 렌더링합니다.

감사합니다.