2012-03-25 15 views
2

私はラケットを使って、入力としてバイナリ演算と2つの引数、つまり任意の型の&bを取り、引数のバイナリ演算を評価し、評価の結果を説明する文字列を返します。私の手順は、fooというられた場合たとえば、その後、プロシージャの評価された引数を含む文字列を返すには?

(foo + 1 2) 
(foo cons 'bar empty) 

The + of 1 and 2 is: 3 
The cons of 'bar and empty is: (bar) 

私のコードは、

​​

ようになります返すそれはいくつかの操作を構築することが可能ですarg- >文字列は、私が欲しいことをします(つまり、文字列に変換する前にその引数を評価しますか?)。文字列を作成するか、引数をプロシージャ本体内で引用するだけで、リテラル結果、つまり "+"または "+"の代わりに "op"または "op"が返されます。

何か助けていただければ幸いです。

答えて

3

このソリューションは、心に来ることが最も簡単です:これはあなたのために働く場合

(define (foo op a b) 
    (printf "The ~s of ~s and ~s is: ~s\n" 
      (object-name op) a b (op a b))) 

参照してください:

(foo + 1 2) 
> The + of 1 and 2 is: 3 

(foo cons 'bar empty) 
> The cons of bar and() is: (bar) 
+0

は良いニュースを@thesook!私の答えを受け入れた直後に、あなたが望むのとまったく同じ手順の名前を表示する方法を見つけました。私の更新された答えを見てみましょう! :) –

+1

ありがとう!それは完全に機能します。 – thesook

関連する問題