1

「scribble」は、ラケットのドキュメント作成ツールです。次の例で問題が発生しました。N = 30の場合、落書きは最大5億のメモリを使用します。1つの落書き文書に300を超えるそのような例を含めることは非常に難しいようです。

cat <<EOF
#lang scribble/manual
@(require scribble/eval)

@title["hello world"]   
EOF
N=30
for((i=0;i<N;i++));do
    cat <<EOF
@(examples
       (require racket/snip)
         (require racket/class)
       (make-object image-snip% "a.jpg"))

EOF
done
) > x.scrbl
scribble x.scrbl 
4

1 に答える 1

4

examples毎回新しい評価者を作成するので、かなり高額になると思います。可能であれば、ドキュメント全体に対して単一のエバリュエーターを作成します。

#lang scribble/manual
@(require scribble/eval)
@(define the-eval (make-base-eval))

@examples[#:eval the-eval
(require racket/snip)
(require racket/class)
(make-object image-snip% "a.jpg")
]
...
@examples[#:eval the-eval
<more stuff>
]

これにより、使用するメモリが大幅に少なくなります。

于 2011-09-01T06:33:00.260 に答える