Используя Racket, я хочу спроектировать процедуру, которая принимает в качестве входных данных двоичную операцию и два аргумента a & b любого типа, оценивает двоичную операцию над аргументами и возвращает строку, описывающую результат оценки.Например, если бы моя процедура называлась foo, то
(foo + 1 2)
(foo cons 'bar empty)
вернул бы
The + of 1 and 2 is: 3
The cons of 'bar and empty is: (bar)
Мой код будет выглядеть примерно так:
(define (foo op a b)
(let ((result (op a b)))
(display
(string-append
"The "
(arg->string op)
" of "
(arg->string a)
" and "
(arg->string b)
" is: "
(arg->string result)
))))
Isможно создать некоторую операцию arg-> string, которая будет делать то, что я хочу (а именно, вычислить ее аргумент перед преобразованием в строку?). Простое создание строки или цитирование аргумента в теле процедуры возвращает литералрезультат, то есть «op» или «op вместо« + »или« + ».
Любая помощь приветствуется.