Вернуть выражение, которое является изменяемым объектом в Scheme? - PullRequest
1 голос
/ 17 февраля 2011

Привет. Я пытаюсь написать функцию, которая будет возвращать выражение, которое является изменяемым и может использоваться как процедура.

Например:

(fooeq 1 2) вернет (eq? 1 2)

и

((fooeq 1 2)) вернет #f

Есть ли способ написать выражение, которое является символом, который можно преобразовать в процедуру?

РЕДАКТИРОВАТЬ: Я понял, спасибо за ответы.На случай, если кому-то еще будет интересно, что это (eval p).

1 Ответ

1 голос
/ 17 февраля 2011

Полагаю, вы хотите fooeq для оценки функции:

> (define (fooeq a b)
    (lambda () (eq? a b)))

> ((fooeq 1 2))
#f
> ((fooeq 1 1))
#t
> 

Функция, которая принимает одну или несколько функций в качестве входа или выхода функции, известна как функция высшего порядка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...