2016-10-02 2 views
0

私がどのように見えるtest.scmというファイルがあります:非replモードでmit/gnu方式をどのように使用しますか?

(display 5) 

と、私はこの

cat test.scm | scheme 

またはこの

scheme < test.scm 

またはこのような

などのように行くを
cat test.scm | scheme > output.txt 

私が得る

MIT/GNU Scheme running under GNU/Linux 
Type `^C' (control-C) followed by `H' to obtain information about interrupts. 

Copyright (C) 2011 Massachusetts Institute of Technology 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

Image saved on Sunday February 7, 2016 at 10:35:34 AM 
    Release 9.1.1  || Microcode 15.3 || Runtime 15.7 || SF 4.41 
    LIAR/x86-64 4.118 || Edwin 3.116 

1 ]=> 5 
;Unspecified return value 

1 ]=> 
End of input stream reached. 
Moriturus te saluto. 

以下の情報を得るにはどうすればよいですか?

5 
+0

[MIT-Schemeで.scmスクリプト(REPL外)を実行するにはどうすればよいですか?](https://stackoverflow.com/questions/903968/how-do-i-execute-a- scm-script-out-of-the-repl-with-mit-scheme) – Flux

答えて

1

トリッキーな質問です。私は少し試しましたが、現在使用している他のSchemeの実装と同じように動作するようにするのに問題があります。冗長出力でOKならば、次のようにしてください:

scheme --load "file.scm" 

Now。私は通常ちょうど私のマシンのための実行可能ファイルを作成するものとraco exeを実行するためにplt-r5rsplt-r6rsを使用します。

plt-r5rs r5rs-program.scm # interpreted r5rs 
plt-r6rs r6rs-program.scm # interpreted r6rs 
raco exe any-scheme-program.scm 
./any-scheme-program # faster executable 

私もコンパイルラケットよりもその時々速いので、時々IKARUSを使用します。あなたの質問に

ikarus --r6rs-script r6rs-program.scm # jit compiled r6rs 

シェルパイプとリダイレクトを使用しようとしています。これらはstdio/stdout/stderrをファイルまたはパイプから別のプログラムにリダイレクトし、は実行されないソースコードをにリダイレクトします。同様にこれを行うR5RS、R6RSとさえR7RSに準拠した他のscheme implementationsがたくさんあることを

cat file1 file2 | ikarus --r6rs-script r6rs-echo.scm | wc -l 
plt-r6rs r6rs-echo.scm < file | wc -l 
plt-r5rs wcl.scm <file> file-count.txt 

注:これは、ラケットとIKARUSの両方で動作します。私がmit-スキームを使ってからしばらくしてきましたが、他の多くのオプションを使って再開する前に、間違いなく良いことになるでしょう。

関連する問題