Как мне прочитать процедуру (лямбда) из ввода? - PullRequest
0 голосов
/ 15 января 2019

Я хочу попасть в лямбда-выражение, затем функция оценивает его с некоторыми аргументами. Это что-то вроде (read)? Но я не хочу, чтобы мои данные стали строками или символами.

(define (foo)
  (define my-func (something like "read"?))
  (display (my-func 2)))

поэтому, когда я говорю (lambda (x) (add1 x)), возвращается 3.

1 Ответ

0 голосов
/ 15 января 2019

Вы можете оценить символическое представление, которое read сгенерирует, используя eval.

(define (foo)
  (define ns (make-base-namespace))
  (define my-func (eval (read) ns))
  (display (my-func 2)))
...