2016-09-15 10 views
2

私はSchemeをかなり新しく使いました。私は現在IDEとしてDrRacketを使っています。スキーム - コンソール出力はどのように決定されますか? (DrRacket)

iは小さなプログラムを使用している場合、例えば - 数を所与のプログラム、その数は0からリストを生成する:

(define (helper num mylist) 
    (cond [(zero? num) (append (list 0) mylist)] 
     [else (helper (- num 1) (append (list num) mylist))])) 
(define (genlist num) 
    (helper num '())) 

(genlist 10)=>「(0 1 2 3 4 5 6 7 8 9 10)

私はJavaのバックグラウンドから来ており、明らかにprintの文はありません。それでは、コンソールにmylistを出力することをどのように決定するのでしょうか?そうするために「何を教えてくれる?」

ありがとうございます!

答えて

2

genlist はそれだけでそれを返し、リストを印刷しません。あなたが入力した式の戻り値を出力するので、それを表示するのはREPLです。

また、あなたがそれをロードするとき、ファイルのトップレベルで記述されている任意の非空の式の値を出力します。

+0

大丈夫ああ..今のおかげで、より理にかなっています! – Gambit2007

+0

@ Gambit2007はまた、このようなトップレバー印刷は '#lang racket 'にとって特別であり、'#!r6rs'トップレベルプログラムは、replに入力されたときにのみ、実行時に明示的に印刷されないものは印刷しません。あなたは[Java repl too](http://www.javarepl.com/console.html) – Sylwester

+0

ありがとう、私はそれを念頭に置いておくよ!これまでのところ、 '#lang racket'だけを使用しているようです。 – Gambit2007

1

インタープリタ(REPL)は、入力した式の値を常に出力します。

我々は

(define (foo a) 
    (display a) 
    a) 

(define (bar a) 
    (display a)) 

を定義する場合、我々は出力hello S(引用符は)手順によって出力され、その後、REPLプロシージャの結果を出力し

> (bar "hello") 
hello 
> (foo "hello") 
hello"hello" 

を得ますコールは最初のものには何もなく、2番目には"hello"です。
DrRacketでは、出力の色も異なります。

(また値が異なっプロシージャの出力である文字列から印刷されている文字列ことに注意してください。)

+0

あなたの答えにも感謝します! – Gambit2007

関連する問題