2

スキームの実装: tinyscheme

これが私の試みです:

(with-output-to-file "biophilia.c"
  (lambda (output-port)
    (write "Hello" output-port)))

次の内容で biophilia.c を作成します。

エラー: ( : 26) 十分な引数がありません

ここで何が間違っていますか?それを修復する方法は?

(define (with-output-to-file s p)
     (let ((outport (open-output-file s)))
          (if (eq? outport #f)
               #f
               (let ((prev-outport (current-output-port)))
                    (set-output-port outport)
                    (let ((res (p)))
                         (close-output-port outport)
                         (set-output-port prev-outport)
                         res)))))
4

1 に答える 1

4

あなたはwith-output-to-file間違って電話をかけています。

2 番目の引数はサンクであり、ポート引数を期待するプロシージャではありません。

したがって、次のように呼び出します。

(with-output-to-file "biophilia.c"
  (lambda ()
    (write "Hello")))

with-output-to-fileすでに現在のポートの再バインドを行っています(再構築で試したように)。

ラケットのドキュメントはこちら.

于 2012-06-06T05:59:27.377 に答える